2017-09-20 28 views
1

나는 개인 SMTP 서버에 이메일을 보내려고하고 있고 sendgrid -받는 사람 SMTP 서버를 지정하는 방법은 무엇입니까?

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

Sendgrid (푸른 블록 SMTP 등)에 동일한 변환하려고 다음과 같이 파이썬 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) 

모든 도움을 주시면 감사하겠습니다.

감사

아주 정상입니다

답변

1

, sendgrid에 대한 파이썬 패키지는 SMTP 프로토콜을 사용하지만, 실제로 고전 HTTPS 요청을 사용하는 API ... 그래서

를 제외한 경우 SMTP 서버 수를 요구하지 않습니다 API (맞춤형?)를 통해 액세스 할 수 있다면 sendgrid 패키지를 사용할 기회가 없습니다. 또한 https://github.com/sendgrid/sendgrid-python

+0

답변 해 주셔서 감사합니다. 근본적인 문제는 SMTP 보내기가 Microsoft Azure에서 차단되고 (또한 AWS가 의심 스럽습니다) sendgrid와 같은 릴레이 서비스를 사용하는 것이 좋습니다. 그러나 smtp를 사용하기 위해 sendgrid를 수정해야한다면 Azure 블로킹 문제를 어느 쪽이든 겪을 것으로 생각됩니다. – dopplesoldner

+0

릴레이 역할을하는 SMTP 서버에 가까운 API 끝점을 만들어야합니다. 당신은 하늘에서 HTTPS로 나가 API 끝점을 가리킨다. 이 질문을 닫을 수 있습니다. 귀하의 질문에 답변 할 수있는 방법은 없습니다.) –

0

을 수행 할 수 있습니다 : 당신이 당신의 SMTP 요청에 대한 릴레이 역할을 자신의 API 엔드 포인트 향해야하기 위해 sendgrid의 파이썬 패키지를 사용자 지정하려면

, 당신은 소스 코드를 자유롭게 변경할 수 있습니다 모든 주요 smtp 벤더가 그것을 지원하고 내가 아는 한 Azure에 의해 차단되지 않기 때문에 포트 2525를 사용하십시오. 하지만 SMTP 서버가 주요 공급 업체가 아닌데 포트를 변경/추가 할 수있는 권한이 없으면 모든 주요 공급 업체가 차단하기 때문에 Azure 이외의 호스팅 서비스를 이용할 수 있습니다. 25, 465, 587.