字符串与电子邮件地址不兼容

时间:2014-08-01 13:55:09

标签: c# winforms email

我是C#的新手。在我学习这门语言的过程中,我创建了一个Windows窗体应用程序,它接收一个电子邮件地址和一个密码并将其发送到预先指定的电子邮件地址。虽然我收到错误The specified string is not in the form required for an e-mail address.

,但我认为我搞砸了数据类型

我的代码如下:

namespace mailTest
{


public partial class Form1 : Form
{
    string mailAddress = "lancepreston@gmail.com";
    string mailPassword = "123456789";
    string SMTP = "smtp.gmail.com";

    public Form1()
    {
        InitializeComponent();
    }


    private void button_Click(object sender, EventArgs e)
    {
        MailMessage mail = new MailMessage(Email.Text, Password.Text); \\ I get the error on this line
        SmtpClient client = new SmtpClient(SMTP);
        client.Port = 587;
        client.Credentials = new System.Net.NetworkCredential(mailAddress,mailPassword);
        client.EnableSsl = true;
        client.Send(mail);
        MessageBox.Show("Mail Sent!", "Success", MessageBoxButtons.OK);
    }
}
}

我的表单截图:

enter image description here

3 个答案:

答案 0 :(得分:6)

MailMessage constructor定义如下

public MailMessage(string from, string to);

第一个参数来自地址,第二个参数是地址,但您似乎在第二个参数中传递密码。这就是你获得例外的原因。

答案 1 :(得分:1)

MailMessage类的特定构造函数要求第一个参数是发件人的电子邮件地址,第二个参数是收件人的电子邮件地址:

http://msdn.microsoft.com/en-us/library/14k9fb7t(v=vs.110).aspx

您正在为需要收件人电子邮件地址的参数提供密码。

我认为你真的想要在邮件正文中传递密码。

查看填充正文的构造函数,或者在初始化MailMessage之后设置Body属性:

http://msdn.microsoft.com/en-us/library/5k0ddab0(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.body(v=vs.110).aspx

答案 2 :(得分:1)

您必须在UserName中指定NetworkCredential,如下所示:

NetworkCredential myCredentials = new NetworkCredential("","","");
myCredentials.Domain = domain;
myCredentials.UserName = username;
myCredentials.Password = passwd;

请参阅以下说明: http://msdn.microsoft.com/en-us/library/system.net.networkcredential.username%28v=vs.110%29.aspx

此外,您的MailMessage参数错误(应该来自/来)。 的问候,