Pythonを使用してGmailアカウントから添付ファイル付きのメールを送信する
この記事では、Pythonを使用して添付ファイル付きのメールを送信する方法を説明します。メールを送信するために、外部ライブラリは必要ありません。 Pythonに付属しているSMTPlibと呼ばれるモジュールがあります。 SMTP(Simple Mail Transfer Protocol)を使用してメールを送信します。メーリング用のSMTPクライアントセッションオブジェクトを作成します。
SMTPには、有効な送信元と宛先の電子メールID、およびポート番号が必要です。ポート番号はサイトによって異なります。例として、グーグルの場合、ポートは 587 。
まず、メールを送信するためにモジュールをインポートする必要があります。
import smtplib
ここでは、MIME(Multipurpose Internet Mail Extension)モジュールを使用して柔軟性を高めています。 MIMEヘッダーを使用して、送信者と受信者の情報およびその他の詳細を保存できます。メールの添付ファイルを設定するには、MIMEも必要です。
メールの送信にはGoogleのGmailサービスを使用しています。したがって、Googleのセキュリティのために、いくつかの設定(必要な場合)が必要です。これらの設定が設定されていない場合、Googleがサードパーティのアプリからのアクセスをサポートしていないと、次のコードが機能しない可能性があります。
アクセスを許可するには、Googleアカウントで「安全性の低いアプリアクセス」設定を設定する必要があります。 2段階認証プロセスがオンになっている場合、安全性の低いアクセスを使用することはできません。
この設定を完了するには、Googleの管理コンソールに移動し、安全性の低いアプリの設定を検索してください。
<中央>SMTP(smtplib)を使用して添付ファイル付きのメールを送信する手順
- MIMEを作成する
- 送信者、受信者のアドレスをMIMEに追加します
- メールタイトルをMIMEに追加します
- 本文をMIMEに添付します
- メールに添付されるバイナリモードでファイルを開きます
- バイトストリームを読み取り、base64エンコードスキームを使用して添付ファイルをエンコードします。
- 添付ファイルのヘッダーを追加
- 適切なセキュリティ機能を備えた有効なポート番号でSMTPセッションを開始します。
- システムにログインします。
- メールを送信して終了します
サンプルコード
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders mail_content = '''Hello, This is a test mail. In this mail we are sending some attachments. The mail is sent using Python SMTP library. Thank You ''' #The mail addresses and password sender_address = '[email protected]' sender_pass = 'xxxxxxxx' receiver_address = '[email protected]' #Setup the MIME message = MIMEMultipart() message['From'] = sender_address message['To'] = receiver_address message['Subject'] = 'A test mail sent by Python. It has an attachment.' #The subject line #The body and the attachments for the mail message.attach(MIMEText(mail_content, 'plain')) attach_file_name = 'TP_python_prev.pdf' attach_file = open(attach_file_name, 'rb') # Open the file as binary mode payload = MIMEBase('application', 'octate-stream') payload.set_payload((attach_file).read()) encoders.encode_base64(payload) #encode the attachment #add payload header with filename payload.add_header('Content-Decomposition', 'attachment', filename=attach_file_name) message.attach(payload) #Create SMTP session for sending the mail session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port session.starttls() #enable security session.login(sender_address, sender_pass) #login with mail_id and password text = message.as_string() session.sendmail(sender_address, receiver_address, text) session.quit() print('Mail Sent')
出力
D:\Python TP\Python 450\linux>python 327.Send_Mail.py Mail Sent
<中央>
-
修正:Gmail メッセージが配信されない。メールの送信機能を使用して、別のアドレスまたはエイリアスからこれを送信しています (解決済み)
Gmail のエラー メッセージ「メッセージが配信されませんでした。Send mail as 機能を使用して、別のアドレスまたはエイリアスからこれを送信しています」は、メールの送信に使用した追加のメール アカウントが正しく設定されていないことを意味します。 GMAIL を使用すると、自分に属する別のメール アドレスを使用してメールを送信できます (Send mail as)。この機能を利用するには、使用する電子メール アカウントに必要な設定 (ユーザー名、パスワード、SMTP サーバー) を Gmail アカウントの設定に正しく追加する必要があります。そうしないと、電子メールの送信後に次の
-
Gmail アカウントを削除する方法
場合によっては、ショッピング サイトからのスパム メールや広告にうんざりしている、古い Gmail アカウントをもう使用していない、またはアカウントが侵害された疑いがある。そのような場合、その Gmail アカウントを削除しても、YouTube と Google アカウントはそのままにしておくことができます。 Gmail アカウントを簡単に削除できることがわかりました。ただし、アカウントを削除する前に、関連するサービスの登録を解除し、銀行に通知し、記録にあるメール アドレスを変更したことを確認してください。さらに、将来必要になる可能性のあるメールをダウンロードまたは保存する必要があります 次の