Question

I have a problem. I coded a program which lets you send an email to the address from a .txt list. It works (I'm in Germany) but for other people (in other countries) it doesn't work. For them only email sending over Gmail works. Any help?

Here is the code :

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();
    }
}
Was it helpful?

Solution

OK, for one reason or another it seems like your user may have been locked out of their Hotmail account. So they could try logging in via the normal web page and see if they are asked to solve a puzzle to unlock it. For more info on this, see:

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

I'm not sure if it is possible to code around this. There have been past questions you can look at here:

SMTP Client Sending error in C# app

Send email via Hotmail to gmail

Also see:

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

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top