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

C# 我可以使用IP地址作为SMTP主机而不是SMTP.email.com吗,c#,.net,email,smtp,smtpclient,C#,.net,Email,Smtp,Smtpclient,我正在创建一个电子邮件发送示例应用程序,我想使用从不同的电子邮件地址发送电子邮件,如“gmail,yahoo,hotmail”,所以我不想使用“smtp.Email.com”作为主机,因为如果我使用“smtp.Email.com”作为主机,我将不得不更改每一家不同公司的主机名,如gmail或电子邮件的“smtp.gmail.com”“smtp.mail.yahoo.com”代表yahoo.com)所以 我可以使用IP地址作为SMTP主机而不是SMTP.email.com吗 请给我一个解决方案,以

我正在创建一个电子邮件发送示例应用程序,我想使用从不同的电子邮件地址发送电子邮件,如“gmail,yahoo,hotmail”,所以我不想使用“smtp.Email.com”作为主机,因为如果我使用“smtp.Email.com”作为主机,我将不得不更改每一家不同公司的主机名,如gmail或电子邮件的“smtp.gmail.com”“smtp.mail.yahoo.com”代表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");
        }

当然你可以使用IP地址而不是名字,但是记住如果他们改变了IP,你就要停止工作了。但是……这需要根据你发送邮件的方式来改变,除非你找到某种形式的中继代理打开。因为yahoo不会接收gmail,gmail也不会接收yahoo等等。事实是如果你是发送时,它最终会改变您使用的是IP还是名称

然而,你的Web服务器很可能会从你的域发送邮件,而不是从你的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"); 
}

etc

编写垃圾邮件引擎?;-)不过,认真地说,包含您的用例可能会有帮助,因为您可能会得到更好的建议来帮助您尝试执行的操作。您不必更改smtp主机,如果您拥有smtp.gmail.com的有效凭据,它将允许您向任何主机发送电子邮件。您说我可以使用我的域作为我的smtp主机t地址,不要担心我的ip地址每次我使用我的应用程序时,我都会获取我的ip并将其参数化设置为我的SMTP地址。有更多的网络托管公司,你无法动摇,但是,大多数用户要么使用你的域,例如“www.myweb.com”,要么在“myweb.theirname.com”上提供“并通常提供后者的电子邮件地址。因此,在第一个实例中,您的域“myweb.com”接受来自您的域的Web服务器的电子邮件发送。他们经常会限制邮件的发送量,但是…“你的”Ip?从哪里来的,你要运行一个开放的realy mail服务器??这将很快被列入黑名单并被滥用,而你的代码则是如此。:)但当我使用它时,我得到了一个错误“名称“textbox1”在当前上下文中不存在”