【问题标题】:Can't send email over Hotmail, only over Gmail [closed]无法通过 Hotmail 发送电子邮件,只能通过 Gmail [关闭]
【发布时间】:2013-05-28 10:27:07
【问题描述】:

我有问题。我编写了一个程序,可让您从 .txt 列表中向该地址发送电子邮件。它有效(我在德国),但对于其他人(在其他国家)它不起作用。对他们来说,只有通过 Gmail 发送电子邮件才有效。有什么帮助吗?

代码如下:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void cmdDistribute_Click(object sender, EventArgs e)
    {
        FileStream fs;
        StreamReader sr;

        if (Receiverlist.Text == "")
        {
            MessageBox.Show("Please type in the path of the list with the receiver! (.txt)", "ERROR : CANT FIND RECEIVERLIST!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }

        fs = new FileStream(Receiverlist.Text, FileMode.Open);
        sr = new StreamReader(fs);

        string zeile;

        if (senderID.Text == "")
        {
            MessageBox.Show("Please type in your login information!", "ERROR : NO EMAIL ADDRESS!");
            fs.Close();
            return;
        }

        else if (SenderPassword.Text == "")
        {
            MessageBox.Show("Please type in your login information!", "ERROR : NO PASSWORD!");
            fs.Close();
            return;
        }

        MessageBox.Show("While sending the emails this programm won´t  response till it has send \nall emails! This could take a while, so please be patient...", "ALERT", MessageBoxButtons.OK, MessageBoxIcon.Warning);

        string mailProvider = "";
        int port = 0;

        try
        {
            if (ProviderGmail.Checked)
            {
                mailProvider = "smtp.gmail.com";
                port = 587;
            }
            else if (providerHotmail.Checked)
            {
                mailProvider = "smtp.live.com";
                port = 587;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Can´t connect to the GMail / Hotmail server. \n Please contact TheFlash on skype!", "ERROR : SMTPSERVER", MessageBoxButtons.OK, MessageBoxIcon.Error);
            fs.Close();
            return;
        }

        if (EmailSubject.Text == "")
        {
            MessageBox.Show("Please type in the subject of the email!.", "ERROR : EMPTY SUBJECT", MessageBoxButtons.OK, MessageBoxIcon.Error);
            fs.Close();
            return;
        }

        int n = 1;

        while (sr.Peek() != -1)
        {
            zeile = sr.ReadLine();

            try
            {

                System.Net.Mail.MailAddress DistributorMail = new System.Net.Mail.MailAddress(senderID.Text);
                System.Net.Mail.MailAddress Receiver = new System.Net.Mail.MailAddress(zeile);
                System.Net.Mail.MailMessage email = new System.Net.Mail.MailMessage(DistributorMail, Receiver);
                email.Subject = EmailSubject.Text;
                email.Body = EmailBody.Text;

                System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(mailProvider,port);
                client.EnableSsl = true;
                client.UseDefaultCredentials = false;
                client.Credentials = new System.Net.NetworkCredential(senderID.Text, SenderPassword.Text);

                if (checkBox1.Checked)
                {
                    if (EmailAttachment.Text == "")
                    {
                        MessageBox.Show("Please type in the path of your attachment!.", "ERROR : EMPTY ATTACHMENT PATH", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        fs.Close();
                        return;
                    }
                    else
                    {
                        MessageBox.Show("If you add an attachment to your mail, it will take longer to send it!", "WARNING", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        email.Attachments.Add(new System.Net.Mail.Attachment(EmailAttachment.Text));
                    }
                }
                else
                {
                    EmailAttachment.Enabled = false;
                }

                try
                {
                    client.Send(email);
                    label9.Text = "Emails sent : " + n;
                    n = n + 1;

                    if (sr.Peek() == -1)
                        MessageBox.Show("Finished!", "TheFlash´s Email Distributor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                catch (Exception Ex)
                {
                    label9.Text = "Couldn´t send the emails!";
                    fs.Close();
                    return;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("This is not an valid email address.", "ERROR : WRONG EMAIL FORMAT", MessageBoxButtons.OK, MessageBoxIcon.Error);
                fs.Close();
                return;
            }

        }
        fs.Close();
        return;

    }

    private void cmdExit_Click(object sender, EventArgs e)
    {
        Close();
    }

    private void cmdAbout_Click(object sender, EventArgs e)
    {
        new AboutBox1().Show();
    }
}

【问题讨论】:

  • 您是使用 TLS 连接还是仅使用基本 SSL?
  • 请阅读this answer 了解我编辑您的标题的原因。
  • @MikePrecup 与基本 SSL 连接,它在代码手册中......
  • 我去做了一些研究,你实际上正在使用 TLS:msdn.microsoft.com/en-us/library/…,这很好,因为我相信 hotmail 需要它。有两种使用 SSL 的方法,你所有的代码都有一个 EnableSsl 的标志,所以我问了。不需要像我没有阅读问题一样对待我。
  • @iAmFastAndYou 在发送的 try/catch 中,您吞下了异常。您应该(以某种方式)在返回之前记录消息和/或堆栈跟踪。希望这将提供有关问题所在的更多信息。

标签: c# email smtp hotmail


【解决方案1】:

好的,出于某种原因,您的用户似乎已被锁定在其 Hotmail 帐户之外。所以他们可以尝试通过普通网页登录,看看他们是否被要求解决一个难题来解锁它。有关这方面的更多信息,请参阅:

Why am I repeatedly locked out of my Hotmail account, and what can I do about it?

我不确定是否可以围绕这个进行编码。您可以在此处查看过去的问题:

SMTP Client Sending error in C# app

Send email via Hotmail to gmail

另见:

Sending Email From C# Via Hotmail/Outlook/Windows Live

facing issues while sending mail using smtp.live.com in c#

【讨论】:

  • 谢谢,这可能是问题所在。我有点困惑,因为他们俩都有问题:/我尝试了超过 2 天不睡觉来解决这个问题哈哈哈 天哪,我太笨了^^ 再次感谢您,先生,祝您有美好的一天!
  • 不客气。不要觉得自己很愚蠢 :) 最好不要吞下这样的异常,因为在诊断/修复问题时它们会成为你的朋友。你也有美好的一天。
  • 当然不要觉得自己很愚蠢。我也遇到了这个问题,这就是为什么我在答案的另见部分中写博客文章的原因。很容易错过。
猜你喜欢
  • 2016-01-13
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2019-02-04
  • 2012-01-07
  • 2023-03-19
相关资源
最近更新 更多