質問

ここでの私のスクリプト:

#!/usr/bin/python

import smtplib
msg = 'Hello world.'

server = smtplib.SMTP('smtp.gmail.com',587) #port 465 or 587
server.ehlo()
server.starttls()
server.ehlo()
server.login('myname@gmail.com','mypass')
server.sendmail('myname@gmail.com','somename@somewhere.com',msg)
server.close()

だけなんですけどねてからメールを送ると、メールマgmailます。スクリプトを使用starttlsのためのgmailメールの要件を満たす。またこの二つのウェブホスト1and1とwebfaction.1and1与えられることになる'接続を拒否'エラー webfaction報告書のないエラーがでない送信します。まったくなにも見えなかのスクリプト、おうと思っているのかに関す。への意見やコメントもよろしくお願いいたします。

編集:ひっくり返してデバッグモードになります。からの出力にもなっているように見えますがメッセージを送信したメンバーに成功---私だけない受け取りに行く。

send: 'ehlo web65.webfaction.com\r\n'
reply: '250-mx.google.com at your service, [174.133.21.84]\r\n'
reply: '250-SIZE 35651584\r\n'
reply: '250-8BITMIME\r\n'
reply: '250-STARTTLS\r\n'
reply: '250-ENHANCEDSTATUSCODES\r\n'
reply: '250 PIPELINING\r\n'
reply: retcode (250); Msg: mx.google.com at your service, [174.133.21.84]
SIZE 35651584
8BITMIME
STARTTLS
ENHANCEDSTATUSCODES
PIPELINING
send: 'STARTTLS\r\n'
reply: '220 2.0.0 Ready to start TLS\r\n'
reply: retcode (220); Msg: 2.0.0 Ready to start TLS
send: 'ehlo web65.webfaction.com\r\n'
reply: '250-mx.google.com at your service, [174.133.21.84]\r\n'
reply: '250-SIZE 35651584\r\n'
reply: '250-8BITMIME\r\n'
reply: '250-AUTH LOGIN PLAIN\r\n'
reply: '250-ENHANCEDSTATUSCODES\r\n'
reply: '250 PIPELINING\r\n'
reply: retcode (250); Msg: mx.google.com at your service, [174.133.21.84]
SIZE 35651584
8BITMIME
AUTH LOGIN PLAIN
ENHANCEDSTATUSCODES
PIPELINING
send: 'AUTH PLAIN *****\r\n'
reply: '235 2.7.0 Accepted\r\n'
reply: retcode (235); Msg: 2.7.0 Accepted
send: 'mail FROM:<myname@gmail.com> size=12\r\n'
reply: '250 2.1.0 OK 4sm652580yxq.48\r\n'
reply: retcode (250); Msg: 2.1.0 OK 4sm652580yxq.48
send: 'rcpt TO:<myname@gmail.com>\r\n'
reply: '250 2.1.5 OK 4sm652580yxq.48\r\n'
reply: retcode (250); Msg: 2.1.5 OK 4sm652580yxq.48
send: 'data\r\n'
reply: '354  Go ahead 4sm652580yxq.48\r\n'
reply: retcode (354); Msg: Go ahead 4sm652580yxq.48
data: (354, 'Go ahead 4sm652580yxq.48')
send: 'Hello world.\r\n.\r\n'
reply: '250 2.0.0 OK 1240421143 4sm652580yxq.48\r\n'
reply: retcode (250); Msg: 2.0.0 OK 1240421143 4sm652580yxq.48
data: (250, '2.0.0 OK 1240421143 4sm652580yxq.48')
役に立ちましたか?

解決

私は、GmailのSMTPサーバーは、あなたから接続するIPアドレスに対してDNSの逆引きを行い、そしてドメインが見つからない場合、接続を拒否していると思います。これは、オープンリレーとしてのSMTPサーバーを使用してから、スパマーを避けるためです。

他のヒント

は、有効なメッセージを構築しようとしたことがありますか?

from email.MIMEText import MIMEText

msg = MIMEText('body')
msg['Subject'] = 'subject'
msg['From'] = "..."
msg['Reply-to'] = "..."
msg['To'] = "..."

どうか分かりませんOPもの利益ばかり考えて行動しているこの答えが見つかり自分がここに努めてのトラブルシューティング同様の問題がその人がこの便利なのです。としても、Googleはその大きさを調整することができるSMTPサーバーを使用すること。までチェックしたいカップルのもの

  1. を使用していることは同じアドレスで認証に使われるのからアドレスです。んだと誤認される場合がほとんどなかったのか、そのセキュリティのため、多くはSMTPホストサイト(googleを含む)を制限するこのアドレスが認証されました。

  2. きのアカウントにアクセス可能である'安全apps(読み:アプリを発生いたしませんので収).いるにログインアカウントをフォローし、ナビゲートはこちらhttps://www.google.com/settings/security/lesssecureapps

  3. ポート587とtlsを表示します。いまかもんの465番ポートに遊びます。

武器agiは、dexで下がらないboxerぐようです。

ここではいくつかの自己宣伝が、私は、有効な地面に感じます。

あなたは、文字通り唯一あなたが書いた正確に何をするために、このコードが必要になります:

import yagmail
yag = yagmail.SMTP('myname@gmail.com')
yag.send('somename@somewhere.com', subject = None, contents = 'Hello')

または1つのライナーます:

yagmail.SMTP('myname@gmail.com').send('somename@somewhere.com', None, 'Hello world.')

どのような素敵なことは、私はあなたのスクリプトにパスワードを見て人々のリスクを持っていることはありませんので、パスワードを保存するためにキーリングを使用することを提案することである。

あなたはインタプリタに一度実行することで、これを設定することができます:

import yagmail
yagmail.register("my@gmail.com", "mypassword")

、終了します。次に、あなただけ使用することができます:

import yagmail
yagmail.SMTP("my@gmail.com") # without password
yagmail.SMTP()を、それは今ではかなり無意味です。

:あなたは、あなたのホームディレクトリに「my@gmail.com」と.yagmail追加する場合は、

次に、あなただけ行うことができます。

警告:あなたはより良いのOAuth2を設定したメッセージの多くは、送信について真剣場合は、yagmailはそれを支援することができます。

yagmail.SMTP("my@gmail.com", oauth2_file="/path/to/save/creds.json")

最初の時間は、あなたがそれで何もする必要はありません次回ように、それはのOAuth2の資格を取得するための手順を案内し、ファイルに保存されます、走りました。 誰かがあなたの資格情報を発見した疑いがありますか?彼らは限られた権限を持っていますが、あなたはより良いGmailで自分の資格情報を無効化します。

パッケージ/インストールの場合は、 gitののか<のhref = "HTTPSをご覧ください:// Pythonの2と3の両方のために利用可能yagmail.readthedocs.io」REL = "nofollowをnoreferrer"> readthedocs を、

アカウントに自分のアカウントから送信されたメッセージは、おそらく表示されます場所それはだとしてあなたは、Gmailであなたの「送信済み」フォルダを確認する必要があります。

私は、上記のリンクに行って、アドレスへの異なる3に送信する必要がありましたが、私はあること#3のアドレスと同じアドレスにしていることを3通の電子メールを受け取りました。

<のhref = "http://mynthon.net/howto/-/python/python%20-%20logging.SMTPHandler-how-to-use-gmail-smtp-server.txt" のrel = "nofollowを" > http://mynthon.net/howto/-/python/python%20-%20logging.SMTPHandler-how-to-use-gmail-smtp-server.txt の

import logging
import logging.handlers

class TlsSMTPHandler(logging.handlers.SMTPHandler):
def emit(self, record):
    """
    Emit a record.

    Format the record and send it to the specified addressees.
    """
    try:
        import smtplib
        import string # for tls add this line
        try:
            from email.utils import formatdate
        except ImportError:
            formatdate = self.date_time
        port = self.mailport
        if not port:
            port = smtplib.SMTP_PORT
        smtp = smtplib.SMTP(self.mailhost, port)
        msg = self.format(record)
        msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\nDate: %s\r\n\r\n%s" % (
                        self.fromaddr,
                        string.join(self.toaddrs, ","),
                        self.getSubject(record),
                        formatdate(), msg)
        if self.username:
            smtp.ehlo() # for tls add this line
            smtp.starttls() # for tls add this line
            smtp.ehlo() # for tls add this line
            smtp.login(self.username, self.password)
        smtp.sendmail(self.fromaddr, self.toaddrs, msg)
        smtp.quit()
    except (KeyboardInterrupt, SystemExit):
        raise
    except:
        self.handleError(record)

logger = logging.getLogger()

gm = TlsSMTPHandler(("smtp.gmail.com", 587), 'myusername@gmail.com', ['address1@gmail.com', 'address2@gmail.com', 'address3@gmail.com'], 'unable to find Error!', ('myusername@gmail.com', 'mypassword'))
gm.setLevel(logging.ERROR)

logger.addHandler(gm)

try:
    1/0
except:
    logger.exception('It NO work for me!!-')

この作品

'''
Created on 2017/11/27

@author: devuser
'''

import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate

FROM_ADDRESS = 'sender@gmail.com'
MY_PASSWORD = 'password'
TO_ADDRESS = 'receiver@test.co.jp'
BCC = 'receiver2@test.net'
SUBJECT = 'GmailのSMTPサーバ経由'
BODY = 'pythonでメール送信'


def create_message(from_addr, to_addr, bcc_addrs, subject, body):
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Bcc'] = bcc_addrs
    msg['Date'] = formatdate()
    return msg


def send(from_addr, to_addrs, msg):
    smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
    smtpobj.ehlo()
    smtpobj.starttls()
    smtpobj.ehlo()
    smtpobj.login(FROM_ADDRESS, MY_PASSWORD)
    smtpobj.sendmail(from_addr, to_addrs, msg.as_string())
    smtpobj.close()


if __name__ == '__main__':

    to_addr = TO_ADDRESS
    subject = SUBJECT
    body = BODY

    msg = create_message(FROM_ADDRESS, to_addr, BCC, subject, body)
    send(FROM_ADDRESS, to_addr, msg)

https://qiita.com/okhrn/items/630a87ce1a44778bbeb1する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top