รหัสเพื่อส่งอีเมล

ฉันทำอะไรผิดที่นี่?

 private void SendMail(string from, string body)
    {
        string mailServerName = "plus.pop.mail.yahoo.com";
        MailMessage message = new MailMessage(from, "[email protected]", "feedback", body);
        SmtpClient mailClient = new SmtpClient();
        mailClient.Host = mailServerName;
        mailClient.Send(message);
        message.Dispose();
    }

ฉันได้รับข้อผิดพลาดต่อไปนี้:

ความพยายามในการเชื่อมต่อล้มเหลวเนื่องจากฝ่ายที่เชื่อมต่อไม่ตอบสนองอย่างถูกต้องหลังจากช่วงระยะเวลาหนึ่ง หรือการเชื่อมต่อที่สร้างไว้ล้มเหลวเนื่องจากโฮสต์ที่เชื่อมต่อล้มเหลวในการตอบสนอง 209.191.108.191:25


person aherlambang    schedule 04.04.2010    source แหล่งที่มา


คำตอบ (3)


คุณกำลังใช้ เซิร์ฟเวอร์ที่ไม่ถูกต้อง. คุณจะต้องใช้การตั้งค่า SMTP

ลองใช้เซิร์ฟเวอร์นี้: plus.smtp.mail.yahoo.com ไซต์ของพวกเขาบันทึกโฮสต์นี้เป็น SSL

private void SendMail(string from, string body) 
{ 
    string mailServerName = "plus.smtp.mail.yahoo.com"; 
    int mailServerPort = 465;
    string toAddress = "[email protected]";
    string subject = "feedback";

    string username = "user";
    string password = "password";

    SmtpClient mailClient = new SmtpClient(mailServerName, 
                                           mailServerPort); 
    mailClient.Host = mailServerName; 
    mailClient.Credentials = new NetworkCredential(username, 
                                                   password);
    mailClient.EnableSsl = true;

    using (MailMessage message = new MailMessage(from, 
                                                 toAddress, 
                                                 subject, 
                                                 body))
        mailClient.Send(message); 
} 
person Matthew Whited    schedule 04.04.2010
comment
ชื่อผู้ใช้และรหัสผ่านควรเป็นรหัสผ่านของผู้ส่ง? - person aherlambang; 04.04.2010
comment
ฉันยังได้รับข้อผิดพลาดต่อไปนี้: การเชื่อมต่อที่มีอยู่ถูกบังคับให้ปิดโดยโฮสต์ระยะไกล - person aherlambang; 04.04.2010
comment
ใช่ ชื่อผู้ใช้และรหัสผ่านจะต้องเป็นของผู้ส่ง ชื่อผู้ใช้อาจจำเป็นต้องเป็นที่อยู่อีเมลของคุณ คุณสามารถลองลบ SSL และการเข้าสู่ระบบได้ แต่นั่นจะขึ้นอยู่กับ yahoo ฉันไม่มีบัญชีกับพวกเขา ดังนั้นฉันจึงไม่สามารถทดสอบให้คุณได้ - person Matthew Whited; 04.04.2010
comment
คือ...นี่คือแบบฟอร์มติดต่อเรา.. คุณกำลังแนะนำว่าฉันต้องให้ผู้ใช้กรอกชื่อผู้ใช้และรหัสผ่านในแบบฟอร์มติดต่อเราหรือไม่? ฟังดูไม่ดีนัก... โดยปกติแล้วแบบฟอร์มติดต่อเราจะกรอกเฉพาะอีเมลเท่านั้น - person aherlambang; 04.04.2010
comment
ไม่ คุณเพียงแค่ต้องมีบัญชีบนเซิร์ฟเวอร์ SMTP คุณควรจะสามารถใส่ที่อยู่ใดๆ ที่คุณต้องการในบรรทัดจากได้ (โดยปกติแล้วที่อยู่ผู้ส่งและบัญชี smtp จะเหมือนกัน เว้นแต่ว่าคุณใช้ SMTP เป็นตัวส่งต่อตามที่คุณอธิบาย) คุณอาจต้องตรวจสอบกับ Yahoo บางครั้งข้อตกลง/นโยบายผู้ใช้ระบุว่าคุณจะใช้เซิร์ฟเวอร์ของพวกเขาสำหรับอีเมลส่วนตัวเท่านั้น - person Matthew Whited; 05.04.2010

คุณต้องใช้เซิร์ฟเวอร์ SMTP ดูเหมือนว่าคุณกำลังใช้เซิร์ฟเวอร์ POP3

person Fogh    schedule 04.04.2010

หากต้องการส่งอีเมลโดยใช้เซิร์ฟเวอร์เมล Yahoo คุณต้องตั้งค่า EnableSSL = true บนอินสแตนซ์ SmtpClient ของคุณ

คุณต้องใช้พอร์ตที่ถูกต้องซึ่งก็คือ 465

มีบทช่วยสอนมากมายบนเว็บไซต์นี้ ซึ่งครอบคลุมถึงวิธีใช้เนมสเปซ System.Net.Mail:

person rtpHarry    schedule 04.04.2010