Skip to main content
 首页 » 编程设计

python之手动发送电子邮件之Python

2024年10月25日32qlqwjy

我正在尝试向 SMTP 服务器发送电子邮件,但我不断从服务器收到错误消息。它说我的命令无法识别,状态代码如 500 和 501。

这是我的脚本:

import socket 
 
server_info = ("smtp.gmx.com", 25) 
 
socket = socket.socket() 
socket.connect(server_info) 
 
username = raw_input("Enter your username: ") 
password = raw_input("Enter your password: ") 
recipient = raw_input("Recipient: ") 
data = raw_input("Your message: ") 
auth = username + "" + password 
auth = auth.encode("base64").replace("\n", "") 
socket.send("HELO\r\n") 
print "EHLO Response: " + socket.recv(1024) 
socket.send("AUTH PLAIN "+auth+"\r\n") 
print "AUTH Response: " + socket.recv(1024) 
socket.send("MAIL FROM:<"+username+">\r\n") 
print "MAIL FROM Response: " + socket.recv(1024) 
socket.send("RCPT TO:"+recipient+"\r\n") 
print "RCPT TO Response: " + socket.recv(1024) 
socket.send("RCPT TO:"+recipient+"\r\n") 
print "RCPT TO Response: " + socket.recv(1024) 
socket.send("DATA\r\n") 
print "DATA Response: " + socket.recv(1024) 
socket.send(data + "\r\n.\r\n") 
print "RAW DATA Response: " + socket.recv(1024) 
socket.send("QUIT\r\n") 
print "QUIT Response: " + socket.recv(1024) 
print "Done." 
 
socket.close() 

这些命令有什么问题?我完全按照它们应该的样子写了它们。 这是我从服务器得到的错误:

http://i.gyazo.com/3f5eb3a34cbb0f00510281bccc8d0546.png

P.S 我不想使用 smtplib。我想手动发送我的电子邮件,用于学习目的

请您参考如下方法:

您有一个很棒的模块来发送电子邮件 - smtplib

使用示例:

import smtplib 
 
SMTP_SERVER = 'smtp.gmail.com' 
SMTP_PORT = 587 
 
sender = 'example@gmail.com' 
password = "password" 
recipient = 'example2@gmail.com' 
subject = 'Gmail SMTP Test' 
body = 'blah blah blah' 
 
 
body = "" + body + "" 
 
headers = ["From: " + sender, 
           "Subject: " + subject, 
           "To: " + recipient, 
           "MIME-Version: 1.0", 
           "Content-Type: text/html"] 
headers = "\r\n".join(headers) 
 
session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) 
 
session.ehlo() 
session.starttls() 
session.ehlo() 
session.login(sender, password) 
 
session.sendmail(sender, recipient, headers + "\r\n\r\n" + body) 
session.quit() 

更新: 如果你想使用 SSL:

... 
session = smtplib.SMTP_SSL_PORT(SMTP_SERVER, SMTP_PORT) 
session.ehlo() 
session.login(sender, password) 
 
session.sendmail(sender, recipient, headers + "\r\n\r\n" + body) 
session.quit()