6

SMTPライブラリを変更した後(つまり、エラーメッセージを抑制していたrset()関数をコメントアウトした後)、Python 3.2 SMTPlib.sendmail()関数を使用してメッセージを送信しようとしています。次のエラーメッセージを取得することができましたサーバーから:

SendMail Failed (554, b'トランザクションに失敗しました: 不正使用の可能性があるためメッセージを送信できません。詳細については、 http ://postmaster.yahoo.com/abuse_smtp.html にアクセスしてください')

yahoo メールの SMTP サーバーは、私がスパムを送信していると考えています。URL は有用なものにリンクしています。不適切なヘッダーに関係していると思います.準拠したヘッダーを構成するものについて決定的な答えを見つけることができないようです.Gmailの同様の問題について読んだことがあります. この投稿は模擬メールに置き換えられました。

どんな助けでもいただければ幸いです

私の完全なコードは以下の通りです:

    self.message =  email.message_from_string('''To: <ksmith@yahoo.co.nz>
    From: <rwilson@yahoo.co.nz>
    Reply-To: <rwilson@yahoo.co.nz>
    Subject: Test send mail \n\n Hello''')
    fromAddress = 'rwilson@yahoo.co.nz'
    toAddress = 'ksmith@yahoo.co.nz'
    try:
        self.smtp = SMTP()
        self.smtp.connect('smtp.mail.yahoo.com')
    except Exception:
        print('Connection Failed')
        print(traceback.format_exc())
    try:
        self.smtp.login('rwilson','tree22')
    except Exception:
        print('Login Failed!')
        print(traceback.format_exc())
    try:
        self.smtp.sendmail(fromAddress,toAddress ,self.message.as_string())
        print("Message sucessfully sent!")
        self.smtp.close()
    except Exception as e:
        print('SendMail Failed')
        print(e)
4

2 に答える 2

6

以下は、Python 2.7 および Python 3.2 の microsoft、google、yahoo アカウントで機能します。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Send email via smtp_host."""
import smtplib
from email.mime.text import MIMEText
from email.header    import Header

####smtp_host = 'smtp.live.com'        # microsoft
####smtp_host = 'smtp.gmail.com'       # google
smtp_host = 'smtp.mail.yahoo.com'  # yahoo
login, password = ...
recipients_emails = [login]

msg = MIMEText('body…', 'plain', 'utf-8')
msg['Subject'] = Header('subject…', 'utf-8')
msg['From'] = login
msg['To'] = ", ".join(recipients_emails)

s = smtplib.SMTP(smtp_host, 587, timeout=10)
s.set_debuglevel(1)
try:
    s.starttls()
    s.login(login, password)
    s.sendmail(msg['From'], recipients_emails, msg.as_string())
finally:
    s.quit()
于 2013-12-26T16:20:38.213 に答える