2012-03-02 43 views
6

Tôi nhận được lỗi này:lỗi SMTP: "Người nhận giải quyết từ chối" khi cố gắng để gửi một email bằng python và postfix

raise SMTPRecipientsRefused(senderrs) smtplib.SMTPRecipientsRefused: {'[email protected]': (550, '5.1.1 : Recipient address rejected: hotmail.com')}

khi cố gắng chạy script python của tôi.

Bất kể địa chỉ người nhận tôi đăng nhập là gì, nó vẫn sẽ cho tôi lỗi tương tự. Tôi có cấu hình của postfix được cài đặt như là địa phương và nó đúng cách nhận ra 'localhost' nhưng không phải là bất kỳ địa chỉ người gửi nào. Đây là mã của tôi:

import smtplib 

def sendEmail(addressFrom, addressTo, msg): 
    server = smtplib.SMTP('localhost') 
    server.set_debuglevel(1) 
    server.sendmail(addressFrom, addressTo, msg) 
    server.quit() 

msg = "This is the content of the email" 
addressFrom = "" 
addressTo = "[email protected]" 

sendEmail(addressFrom, addressTo, msg) 

Và đây là tệp main.cf cho postfix. Nhìn vào nó bây giờ, mydestination chỉ được thiết lập để địa phương địa phương, có thể đó là vấn đề?

# See /usr/share/postfix/main.cf.dist for a commented, more complete version 


# Debian specific: Specifying a file name will cause the first 
# line of that file to be used as the name. The Debian default 
# is /etc/mailname. 
#myorigin = /etc/mailname 

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) 
biff = no 

# appending .domain is the MUA's job. 
append_dot_mydomain = no 

# Uncomment the next line to generate "delayed mail" warnings 
#delay_warning_time = 4h 

readme_directory = no 

# TLS parameters 
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem 
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key 
smtpd_use_tls=yes 
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache 
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache 

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for 
# information on enabling SSL in the smtp client. 

myhostname = user-desktop 
**mydomain = hotmail.com** 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
**mydestination = user-desktop, localhost.$mydomain www.$mydomain** 
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
mailbox_size_limit = 0 
recipient_delimiter = + 
inet_interfaces = loopback-only 
default_transport = error 
relay_transport = error 
inet_protocols = ipv4 

Cảm ơn bạn trước

Trả lời

1

Mã của bạn có vẻ OK. Điều này rất có thể là một vấn đề cấu hình với Postfix.

+0

Thật sao? Nó sẽ giúp ích nếu tôi đăng tập tin cấu hình? – user1186173

+0

"Nhìn vào nó bây giờ, mydestination chỉ được thiết lập để địa chỉ địa phương, có thể đó là vấn đề?" Đúng chính xác. Xem http://www.postfix.org/postconf.5.html#mydestination – Sahand

+0

Cảm ơn bạn đã liên kết, nó chắc chắn hữu ích, tôi đã thực hiện một vài thay đổi nhưng tôi vẫn nhận được lỗi tương tự. Ngoài ra, tôi muốn có thể gửi email đến bất kỳ tên miền nào, không chỉ một tên miền cụ thể. Tôi cảm thấy cấu hình hiện tại chỉ dành cho các miền cụ thể. – user1186173

0

Xin chào, tôi đã gặp sự cố tương tự. Tôi đã nhận được lỗi:

(550, '5.7.1 Khách hàng không có quyền để gửi như gửi này')

Bật TLS, thêm ehlo lệnh rõ ràng cố định các vấn đề đối với tôi. Hy vọng nó giúp.

def mail(msg): 
email_server = "mail.some-server.com" 
sender = "[email protected]" 
to = "[email protected]" 
subject = "How about those Mariners!" 
headers = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (sender, to, subject) 
text = msg 
message = headers + text 
mailServer = smtplib.SMTP(email_server) 
mailServer.set_debuglevel(1) 
mailServer.ehlo() 
mailServer.starttls() 
mailServer.ehlo() 
mailServer.login('user', 'pass') 
mailServer.ehlo() 
mailServer.sendmail(sender, to, message) 
mailServer.quit() 
Các vấn đề liên quan