2017-09-20 11 views
1

私はプライベートSMTPサーバーに電子メールを送信しようとしていますし、 sendgrid - 受信者のSMTPサーバーを指定する方法は?

s = smtplib.SMTP(server, port) 
s.sendmail(me, you, msg.as_string()) 

Sendgrid(アズールブロックSMTPなど)に同じに変換しようとすると、次のようにpythonの smtplibを使用して行うことができますが、それはへのオプションがありませんプライベートSMTPサーバーを指定します。

import sendgrid 
import os 
from sendgrid.helpers.mail import * 

sg = sendgrid.SendGridAPIClient(apikey=os.environ.get('SENDGRID_API_KEY')) 
from_email = Email("[email protected]") 
to_email = Email("[email protected]") 
subject = "Sending with SendGrid is Fun" 
content = Content("text/plain", "and easy to do anywhere, even with Python") 
mail = Mail(from_email, subject, to_email, content) 
response = sg.client.mail.send.post(request_body=mail.get()) 
print(response.status_code) 
print(response.body) 
print(response.headers) 

ご協力いただければ幸いです。 SMTPサーバーができる場合を除き

、sendgridは、SMTPプロトコルを使用しますが、実際には、古典的なHTTPSリクエストを使用するAPIを要求しないためのpythonパッケージ非常に正常だおかげ

答えて

1

...

ので、 API(カスタムメード?)でアクセスすると、sendgridパッケージを使用する機会はありません。

あなたのSMTP要求のためのリレーとして機能する独自のAPIエンドポイントに向くためにsendgridのためのpythonパッケージをカスタマイズしたい場合は、そのソースコードを変更するのは自由です。https://github.com/sendgrid/sendgrid-python

+0

答えをありがとう。基本的な問題は、SMTP送信がMicrosoft Azureでブロックされていることです(またAWSも疑わしい)、sendgridなどのリレーサービスを使用することをお勧めします。しかし、smtpを使用するためにsendgridを変更する必要がある場合は、どちらかの方法でAzureブロック問題に遭遇すると思います。 – dopplesoldner

+0

リレーとして機能するSMTPサーバーの近くにAPIエンドポイントを作成する必要があります。あなたは、HTTPSでazureから出て、APIエンドポイントを指します。この質問を閉じることができます。あなたの質問に答えられる方法はありません;) –

0

別のことができます。すべての主要なsmtpベンダーがそれをサポートし、私が知る限りAzureによってブロックされないので、ポート2525を使用してください。しかし、あなたのsmtpサーバーが大手ベンダーからのものではなく、ポートを変更/追加するためのアクセス権がない場合、主要なベンダーがブロックしているので、ホスティングのためにAzure以外のサービスに行くことはできません25、465、587.

関連する問題