Não é possível enviar email no ASP.net através dos servidores Godaddy
-
20-09-2019 - |
Pergunta
Eu tenho um aplicativo ASP.NET hospedado no Godaddy, do qual quero enviar e -mails. Quando corre, eu entendo: Nome da caixa de correio não permitido. A resposta do servidor foi: Desculpe, retransmitir negado da sua localização. As partes importantes do código e web.config estão abaixo:
msg = new MailMessage("accounts@greektools.net", email);
msg.Subject = "GreekTools Registration";
msg.Body =
"You have been invited by your organization to register for the GreekTools recruitment application.<br/><br/>" +
url + "<br/><br/>" +
"Sincerely,<br/>" +
"The GreekTools Team";
msg.IsBodyHtml = true;
client = new SmtpClient();
client.Host = "relay-hosting.secureserver.net";
client.Send(msg);
<system.net>
<mailSettings>
<smtp from="accounts@greektools.net">
<network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" />
</smtp>
</mailSettings>
Solução
1- Se o seu site estiver hospedado no GoDaddy, você poderá usar "retransmissão-host.secureServer.net" sem credenciais.
2- Se o seu site estiver hospedado fora do Godaddy, você poderá usar "smtpout.secureServer.net" com suas credenciais de conta de email.
PS: Altere a porta 3535 se você tiver problemas com 25
Hospedado em GoDaddy
<system.net>
<mailSettings>
<smtp from="abc@xyz.net">
<network host="relay-hosting.secureserver.net"/>
</smtp>
</mailSettings>
</system.net>
Externo
<system.net>
<mailSettings>
<smtp from="abc@xyz.net">
<network host="smtpout.secureserver.net"
userName="abc@xyz.net" password="your_password_here"
port="25" />
</smtp>
</mailSettings>
</system.net>
Outras dicas
Aqui está minha aula de e -mail:
public class Email
{
public enum MailAddressType
{
From = 1,
Bcc
}
private static MailAddress _from = null;
public static void SendEmail(string to, string subject, string body)
{
SendEmail(to, subject, body, From, string.Empty);
}
public static void SendEmail(string to, string subject, string body, string from)
{
SendEmail(to, subject, body, from, MailAddressType.From);
}
public static void SendEmail(string to, string subject, string body, string addresses, MailAddressType addressType)
{
MailAddress from = From;
string bcc = string.Empty;
if (MailAddressType.From == addressType)
{
from = new MailAddress(addresses);
}
else
{
bcc = addresses;
}
SendEmail(to, subject, body, from, bcc);
}
private static void SendEmail(string to, string subject, string body, MailAddress from, string bcc)
{
MailMessage message = new MailMessage();
message.From = From;
message.To.Add(to);
if (!string.IsNullOrEmpty(bcc))
{
message.Bcc.Add(bcc);
}
message.ReplyTo = from;
message.Subject = subject;
message.Body = HttpContext.Current.Server.HtmlEncode(body);
SmtpClient smtp = new SmtpClient();
smtp.Send(message);
}
public static MailAddress From
{
get
{
if (null == _from)
{
SmtpSection section = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
string address = section.From;
string displayName = ConfigurationManager.AppSettings["fromEmailDisplayName"];
_from = new MailAddress(address, displayName);
}
return _from;
}
}
}
E aqui estão as configurações relacionadas à web.config:
<appSettings>
<add key="fromEmailDisplayName" value="Firstname Lastname"/>
</appSettings>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="myname@mydomain.com">
<network host="relay-hosting.secureserver.net" />
</smtp>
</mailSettings>
</system.net>
Para mim, a chave era "mensagem.From = de" e "message.replyTo = de". Godaddy parece querer que a mensagem venha de um endereço em seu domínio. Portanto, para páginas de contato, use seu endereço de e -mail padrão como o e defina o remetente como a resposta. O e -mail passa bem depois disso.
Provavelmente, essa é uma resposta do servidor SMTP, porque a máquina que tentava enviar email não foi permitida (ou está na lista negra para spam). É um servidor Godaddy, ou está em uma rede diferente? Você pode encontrar um servidor do GoDaddy que permita que o email seja retransmitido. Eu imaginaria que muitos provedores de hospedagem compartilhados têm restrições hoje.
Eu descobriria que tipo de servidor SMTP você está usando e quais medidas anti-spam estão em vigor. O administrador pode adicionar o servidor Godaddy à lista de permissões de hosts permitidos. Você precisa ter muito cuidado e certifique -se de que o aplicativo não possa ser usado como proxy para um spammer. Certifique -se de validar toda a entrada para garantir que ela seja segura.
Verifique seu nome de host. Você tem certeza de que sua conta não está configurada para usar o Mail.greektools.net? Esse é o formato padrão para o GoDaddy Webhosting ..
definir
defaultCredentials="false"
no seu elemento de rede
<network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" defaultCredentials="false" />
Qual e -mail ou servidor de retransmissão devo usar no meu código ASP.NET 3.5?
Você não precisa fornecer um nome de usuário e senha para este servidor de retransmissão.
Apenas para um teste. Remova os valores de nome de usuário e senha do web.config.
Então, em seu conjunto de código
//call this line, before you call .Send
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Send(msg)
Acabei de perguntar a Godaddy, como configurar um Mailer SMTP Form, e eles me disseram que eu precisaria usar um servidor de retransmissão, sem nome de usuário, sem senha e nenhuma porta. O nome do servidor a ser usado era o mesmo nome que você usou.
var message = new MailMessage();
message.To.Add(new MailAddress("email-address"));
message.From = new MailAddress("email-address");
message.Subject = "subject";
message.Body = string.Format("message-body");
message.IsBodyHtml = true;
using (var smtp = new SmtpClient())
{
smtp.Host = "relay-hosting.secureserver.net";
smtp.EnableSsl = false;
smtp.Credentials = CredentialCache.DefaultNetworkCredentials;
await smtp.SendMailAsync(message);
}
Para aqueles que querem saber o que deve ser o código C#, além da resposta aceita, o código abaixo funcionou para mim. Observe que o endereço "de" já está mencionado no web.config na resposta aceita, portanto, não há necessidade de mencioná -lo no código C#.
public static void SendMail(string emailid, string subject, string body)
{
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
msg.To.Add(new MailAddress(emailid));
msg.Subject = subject;
msg.IsBodyHtml = true;
msg.Body = body;
client.Send(msg);
}
Experimente o código abaixo:
smtp.Host = "relay-hosting.secureserver.net";
smtp.Port = 25;
smtp.Credentials = new System.Net.NetworkCredential("test@yourwebsitedomain.com", "*******");
Funcionou para mim.