質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2235閲覧

Pythonでメール送信時に送信者名に日本語表記を使用したときの不具合について

shitumon-suru

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2018/06/01 02:25

前提・実現したいこと

Python 3.6.2(Anaconda)32bit を使用してメール送信したいと考えています。
その際、差出人名を日本語にしたいと考えています。
使用しているPCはWindows8.1 Pro 64bitです。

発生している問題・エラーメッセージ

送信はできたのですが、送信者名の表示がおかしくなります。

(Thunderbirdで受信したとき)
私の名前<私のメールアドレス>@xxxx.yyyy.ac.jp
xxxx >> メールサーバのコンピュータ名
yyyy >> ドメイン名
(勤務先で使用しているWebメールサービスで受信したとき)
"私の名前"<私のメールアドレス>@xxxx.yyyy.ac.jp>
xxxx >> メールサーバのコンピュータ名
yyyy >> ドメイン名

上記のように、「@xxxx.yyyy.ac.jp」と余計な文字列がくっついてしまいます。
この文字列が表示されないようにするにはどうすればよいかご教示いただけますでしょうか。
どうぞよろしくお願いいたします。

該当のソースコード

#使用しているのはPython 3.6.2です。 # -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText from email.header import Header charset = 'iso-2022-jp' send_name = u'私の名前' #差出人名 send_addr = '私のメールアドレス' #差出人のメールアドレス msg = MIMEText(u'これはテストメールです。\n確認をお願いします。', 'plain', charset) #差出人名+アドレス #'%s<%s>'でもu'%s<%s>'でも結果は同じだった msg['From'] = u'%s<%s>'%(str(Header(send_name.encode(charset), charset)), send_addr) #タイトル msg['Subject'] = Header(u'テストメールです'.encode(charset), charset) #SMTPサーバ名、ポート番号 smtp_obj = smtplib.SMTP('SMTPサーバ名', 25) #SMTPサーバに"Hello"メッセージを送信する(必須) smtp_obj.ehlo() #SMTPサーバにログイン(ログイン名、パスワード) #>>今回この操作は使用していない ##print('ログイン名:') ##login_name = input() ##print('パスワード:') ##passwd_name = input() #smtp_obj.login(login_name, passwd_name) #メッセージの送信 smtp_obj.sendmail(send_addr, '送信先メールアドレス', msg.as_string()) #最後に切断する smtp_obj.quit()

試したこと

ちなみに、print(msg['From'])で内容を見たところ、
正しく「私の名前<私のメールアドレス>」となっていました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

"私の名前"<私のメールアドレス>を丸ごとMIMEエンコードしてるからじゃないですか?
"私の名前"だけをMIMEエンコードしたうえで、半角スペース1つと<私のメールアドレス>を文字列連結したらいいんじゃないでしょうか。

投稿2018/06/03 03:17

a_saitoh

総合スコア702

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shitumon-suru

2018/06/04 02:31

ご指摘いただきありがとうございました。 下記のコードで実行したところ、自分が求めていた表記となりました。 (修正コード) msg['From'] = '%s <%s>'%(Header(send_name.encode(charset), charset).encode(), send_addr) (結果) 差出人名が、Thunderbirdでは「(自分)」と表記され、Webメールでは「"私の名前"<私のアドレス>」と 表記され、思い通りの結果が得られました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問