我可以使用IP地址作为SMTP主机而不是smtp.email.com

时间:2012-09-19 06:51:08

标签: c# .net email smtp smtpclient

我正在创建一个电子邮件发送示例应用程序,我想使用来自不同电子邮件地址的发送电子邮件,如“gmail,yahoo,hotmail”,所以我不想使用“smtp.email.com”作为主机,因为如果我使用“smtp.email.com”作为主机,我将不得不为每个不同的公司更改我的主机名,如(gt的“smtp.gmail.com”或yahoo.com的“smtp.mail.yahoo.com”)所以 我可以使用IP地址作为SMTP主机而不是smtp.email.com。

请给我一个解决方案,以便在不更改smtp主机名的情况下,我可以使用不同的电子邮件公司发送电子邮件。

这是我的代码:

        try
        {
            // setup mail message
            MailMessage message = new MailMessage();
            message.From = new MailAddress(textBox1.Text);
            message.To.Add(new MailAddress(textBox2.Text));
            message.Subject = textBox3.Text;
            message.Body = richTextBox1.Text;

            // setup mail client
            SmtpClient mailClient = new SmtpClient("smtp.gmail.com");//here i have to change SMTP host for different email company 
            mailClient.Credentials = new NetworkCredential(textBox1.Text,"password");

            // send message
            mailClient.Send(message);

            MessageBox.Show("Sent");
        }
        catch(Exception)
        {
            MessageBox.Show("Error");
        }

1 个答案:

答案 0 :(得分:1)

当然你可以使用IP地址而不是名字,但是请记住,如果他们改变了你要改变你的IP以便停止工作..但是......这需要改变,这取决于你发送邮件的内容,除非你发现某种形式的中继代理打开.. AS雅虎不会收到gmail和gmail不会收到雅虎等..现实是如果你发送它会最终改变你使用IP或名称。

然而,您的网络服务器很可能会从您的域发送邮件,而不是您的Gmail / yahoo帐户..为什么不从您的域发送邮件?例如,noreply @ myweb.com然后smtp服务器保持与您的Web提供商相同

当然你可以做到

SmtpClient mailClient
if (textbox1.Text.Contains("gmail") 
{
            mailClient = new SmtpClient("smtp.gmail.com");/
            mailClient.Credentials = new NetworkCredential(textBox1.Text,"password"); 
}
else if (textbox1.Text.Contains("somemail") 
{
            mailClient = new SmtpClient("smtp.somemail.com");/
            mailClient.Credentials = new NetworkCredential(textBox1.Text,"password"); 
}