アリ雲メールの発送は25ポートを使用できません。
ローカルテストはメール機能が流暢で、アリ雲に配備されてからいつもNOT FINDを発見しました。これはおかしいです。初めはurlが間違ったと思っていましたが、Nを何回も確認したら全く同じです。その後、Baiduの様々な種類は、アリ雲が25ポートを無効にしたためです。いろいろな資料を調べて、解決方法はさまざまです。いくつかの解決策を試してみましたが、問題は全部解決しました。今は次のように整理します。
まず、アリさんからの公式ソリューションです。SMTPでメールを送ります。コードは下記の通りです。
以下は2つのユーザーが提供する簡単な解決策です。
これは簡略版のSMTP方式です。
setting.pyの配置は以下の通りです。
まず、アリさんからの公式ソリューションです。SMTPでメールを送ります。コードは下記の通りです。
# -*- coding:utf-8 -*-
import urllib, urllib2
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
# ,
username = '[email protected]'
# ,
password = 'XXXXXXXX'
# , , 30
rcptlist = ['[email protected]', '[email protected]']
receivers = ','.join(rcptlist)
# multipart
msg = MIMEMultipart('mixed')
msg['Subject'] = 'Test Email'
msg['From'] = username
msg['To'] = receivers
# multipart/alternative text/plain
alternative = MIMEMultipart('alternative')
textplain = MIMEText(' ', _subtype='plain', _charset='UTF-8')
alternative.attach(textplain)
# multipart/alternative text/html
texthtml = MIMEText(' ', _subtype='html', _charset='UTF-8')
alternative.attach(texthtml)
# alternative mixed
msg.attach(alternative)
#
# xlsx
xlsxpart = MIMEApplication(open(' 1.xlsx', 'rb').read())
xlsxpart.add_header('Content-Disposition', 'attachment', filename=Header(" 1.xlsx","utf-8").encode())
msg.attach(xlsxpart)
# jpg
jpgpart = MIMEApplication(open('2.jpg', 'rb').read())
jpgpart.add_header('Content-Disposition', 'attachment', filename=Header("2.jpg","utf-8").encode())
msg.attach(jpgpart)
# mp3
mp3part = MIMEApplication(open('3.mp3', 'rb').read())
mp3part.add_header('Content-Disposition', 'attachment', filename=Header("3.mp3","utf-8").encode())
msg.attach(mp3part)
#
try:
client = smtplib.SMTP()
#python 2.7 , SSL, client
#client = smtplib.SMTP_SSL()
client.connect('smtpdm.aliyun.com')
client.login(username, password)
#
client.sendmail(username, rcptlist, msg.as_string())
client.quit()
print ' !'
except smtplib.SMTPRecipientsRefused:
print ' , '
except smtplib.SMTPAuthenticationError:
print ' , '
except smtplib.SMTPSenderRefused:
print ' , '
except smtplib.SMTPException,e:
print ' , ', e.message
公式のはもちろん使いやすくて、書いたのはあまりに詳しくて複雑で、本当にもったいなくて、できるだけ少ないのがコードを直すため、放棄しました。以下は2つのユーザーが提供する簡単な解決策です。
これは簡略版のSMTP方式です。
import smtplib
from email.mime.text import MIMEText
msg_from = '[email protected]' #
passwd = '****' # ( , )
msg_to = ['****@qq.com','**@163.com','*****@163.com'] #
subject = " " #
content = " , , "
# MIMEText ( )
# _text_:
msg = MIMEText(content)
#
msg['Subject'] = subject
#
# msg['Subject'] = Header(subject, 'utf-8')
#
msg['From'] = msg_from
#
msg['To'] = '[email protected]'
# msg['To'] = ' '
try:
# ssl , ,
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
#
s.login(msg_from, passwd)
# : , ,
s.sendmail(msg_from, msg_to, msg.as_string())
print(' ')
except s.SMTPException as e:
print(e)
finally:
s.quit()
方法二:send_を使用するためにメールモジュール送信(私のもとのコードと似ています。変更が少ないです。壁裂のオススメ)setting.pyの配置は以下の通りです。
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com' # 163 smtp.163.com
EMAIL_PORT = 465 #
EMAIL_HOST_USER = '[email protected]' #
EMAIL_HOST_PASSWORD = '***' #
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
# ,
#DEFAULT_FROM_EMAIL = 'lqz<'[email protected]>'
EMAIL_USE_SSL = True # ssl
#EMAIL_USE_TLS = False # tls
#EMAIL_USE_SSL EMAIL_USE_TLS , True
view.py
from django.core.mail import send_mail #
from threading import Thread #
from threading import Thread
t1 = Thread(target=send_mail,args=(
' %s %s '%(article_name,user_name),
' :%s'%(content),
settings.EMAIL_HOST_USER,
['[email protected]'] ))
t1.start()
ここで、アリ雲メールの発送について25ポートを使うことができないという問題を解決した記事を紹介します。これに関連して、アリ雲メールは25ポートの内容を使えません。以前の文章を検索してください。また、下記の関連記事を見てください。これからもよろしくお願いします。