2013-06-01 436 views
0

我遇到问题。我编写了一个程序,让你从.txt列表中发送电子邮件到该地址。它有效(我在德国),但对其他人(在其他国家)它不起作用。对于他们来说,只有通过Gmail发送电子邮件才有效任何帮助?无法通过Hotmail发送电子邮件,只能通过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(); 
    } 
} 
+0

你使用TLS或只是基本的SSL连接? –

+0

请阅读[本回答](http://meta.stackexchange.com/a/130208/213671)了解为什么我编辑了您的标题。 – gunr2171

+0

@MikePrecup连接到基本的SSL,它的代码人... – iAmFastAndYou

回答

0

OK,对于某种原因它看起来像你的用户可能已经锁定了他们的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#

+0

谢谢,这可能是问题。我有点困惑,因为他们都有这个问题:/而且我试了两天以上没有睡觉来修复那个hahahaha omg im太愚蠢了^^再次感谢你,先生,祝你有美好的一天! – iAmFastAndYou

+0

不客气。不要感到愚蠢:)最好是不要吞下这样的例外,因为当涉及诊断/修复问题时,它们将成为你的朋友。你也有美好的一天。 – davmos

+0

肯定不要觉得蠢。我也有这个问题,这就是为什么我在答案的另一部分中写了博客文章的原因。很容易错过。 –