아 리 클 라 우 드 메 일 발송 25 포트 사용 불가 문제 해결

로 컬 테스트 메 일 발송 기능 이 원활 합 니 다.아 리 클 라 우 드 에 배 치 된 후에 항상 NOT FIND 라 는 것 을 발견 하면 이상 합 니 다.처음에는 url 이 잘못 써 서 그런 줄 알 았 는데 N 을 여러 번 검사 해 보 니 똑 같은 것 이 었 습 니 다.이후 각종 바 이 두 는 아 리 클 라 우 드 가 25 포트 를 사용 하지 않 았 기 때 문 이라는 것 을 발견 했다.각종 자 료 를 살 펴 보면 해결 방법 이 다양 하 다.몇 가지 해결 방안 을 시험 해 보 았 더 니 모두 문 제 를 해결 했다.지금 은 다음 과 같이 정리 합 니 다.(25 포트 해 제 를 신청 하지 않 아 도 됩 니 다.진지 하 게 책임 지고 알려 드릴 수 있 습 니 다.전혀 알 이 없습니다)
우선,아 리 가 크게 준 공식 적 인 해결 방안 입 니 다.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

공식 적 인 것 은 당연히 쓰기 쉽 지.다만 너무 상세 하고 복잡 하 게 써 서 고생 하기 가 귀찮아 서 가능 한 한 코드 를 적 게 고치 기 위해 포기 했다.
다음은 두 네티즌 이 제공 한 간단 한 해결 방안 이다.
이게 간소 화 된 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()
방법 2:send 사용 을 위 한mail 모듈 발송(원래 코드 와 비슷 하고 변경 이 적 으 며 벽 균열 추천)
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
views.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 포트 를 사용 할 수 없습니다.예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 저 를 많이 사랑 해 주세요!

좋은 웹페이지 즐겨찾기