Compartilhamento de tecnologia

.net C# Use a caixa de correio NetEase 163 para construir um serviço smtp para realizar a função de envio de e-mails

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Descrição da função: Use a verificação de e-mail para realizar a ativação do registro do usuário e recuperação de senha. A caixa de correio seleciona NetEase 163 como servidor SMTP.

Situação de teste real: Tipo 1: A porta 25 da maioria das operadoras de servidor está bloqueada por padrão. Você pode entrar em contato com a operadora para desbloquear a porta 25. Após o desbloqueio, a porta 25 pode ser usada. O segundo tipo: Use portas criptografadas 465 e 587 Após o teste, a porta 587 falhou ao enviar e retornou "Não é possível ler dados da conexão de transmissão", portanto, apenas a configuração da porta 465 é feita aqui. Abaixo estão os códigos de dois casos de sucesso. Escolha de acordo com a situação real.

Pelas informações na Internet, descobri que a porta 587 das caixas de correio Alibaba e QQ também falhou no envio, por isso sabe-se atualmente que a porta de serviço stmp 587 dos três principais operadores NetEase, Alibaba e QQ falhou.

Etapa um: inicie o serviço smtp. Faça login na caixa de correio NetEase [Configurações] - encontre [POP3/SMTP/IMAP] no menu esquerdo, habilite o serviço e obtenha a senha de autorização (nota: a senha no código usa a senha de autorização).Defina como mostrado na imagem

Etapa 2: Configure as regras de pilha do firewall do servidor e adicione a porta 465.

Etapa 3: Código.

Send25 é um método para testar a capacidade de enviar e-mails na porta 25. Biblioteca de classes usada System.Net.Mail

público vazio Send25()
        {

//this.SmtpHost //Especifique o endereço do servidor smtp

//this.SmtpPort //porta do servidor smtp

//this.FromEmailAddress //O endereço de e-mail para envio de e-mails

//this.FormEmailPassword //Senha de e-mail para envio de e-mails, o código de autorização é usado aqui

//this.ToList //O endereço de e-mail para recebimento de e-mails, que pode ser uma coleção separada por vírgulas


//System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;//Como usar o comando
SmtpClient smtp = new SmtpClient(); //Instancia um SmtpClient
smtp.DeliveryMethod = SmtpDeliveryMethod.Network //Definir o modo de saída do smtp para Rede;
smtp.EnableSsl = false; //Se o servidor smtp habilita a criptografia SSL
smtp.Host = this.SmtpHost; //Especifique o endereço do servidor smtp
smtp.Port = this.SmtpPort; //Especifique a porta do servidor smtp O padrão é 25. Se a porta padrão for usada, ela pode ser omitida.
smtp.UseDefaultCredentials = true; //Se o seu servidor SMTP não requer autenticação de identidade, use o método a seguir, basicamente não há necessidade de autenticação.
//smtp.EnableSsl = falso;
smtp.Credentials = new NetworkCredential(this.FromEmailAddress, this.FormEmailPassword); //Se a autenticação for necessária, use o seguinte método;

MailMessage mm = new MailMessage(); //Instancia uma classe de correio
mm.Priority = MailPriority.Normal; //A prioridade do e-mail é dividida em Baixa, Normal e Alta. Normalmente Normal pode ser usado.
mm.From = new MailAddress(this.FromEmailAddress, "Administrador", Encoding.GetEncoding(936));

//destinatário
se (!string.IsNullOrEmpty(this.ToList))
mm.To.Add(isso.ParaLista);
//Cc pessoa
se (!string.IsNullOrEmpty(this.CCList))
mm.CC.Add(este.CCList);
//CC
se (!string.IsNullOrEmpty(this.BccList))
mm.Bcc.Add(esta.ListaBcc);

mm.Subject = this.Subject; //Título do e-mail
mm.SubjectEncoding = Encoding.GetEncoding(936); //Isso é muito importante Se o título do seu e-mail contiver chinês, ele deverá ser especificado aqui, caso contrário, a outra parte provavelmente receberá caracteres ilegíveis.
mm.IsBodyHtml = this.IsBodyHtml; //Se o corpo do e-mail está no formato HTML
mm.BodyEncoding = Encoding.GetEncoding(936); //A codificação do corpo do e-mail está definida incorretamente e o destinatário receberá caracteres ilegíveis.
mm.Body = this.Body; //Texto do e-mail
//anexo de email
se (this.AttachmentList != nulo && this.AttachmentList.Count > 0)
            {
foreach (Anexo anexo em this.AttachmentList)
                {
mm.Attachments.Add(anexo);
                }
            }
smtp.Enviar(mm);

        }

Send465 é um método para testar a capacidade de enviar e-mails na porta 465. Biblioteca de classes usada System.Web.Mail

bool público Send465()
        {
// Assunto do email
Sistema.Web.Mail.MailMessage mmsg = novo Sistema.Web.Mail.MailMessage();
//Assunto do email
mmsg.Subject = "Assunto";
mmsg.BodyFormat = Sistema.Web.Mail.MailFormat.Html;
//Texto do e-mail
mmsg.Body = "Texto";

//Codificação de texto
mmsg.BodyEncoding = Codificação.UTF8;
//prioridade
mmsg.Priority = Sistema.Web.Mail.MailPriority.Normal;
//Endereço de e-mail do remetente
mmsg.From = E-mail;
//Endereço da caixa de entrada do destinatário
mmsg.To = e-mail;

mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//nome de usuário
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", Email);
//Senha (código de autorização)
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Emailpwd);
//porta
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", Porta);
//Se SSL
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl",true);
//servidor SMTP
Sistema.Web.Mail.SmtpMail.SmtpServer = Host;
tentar
            {
Sistema.Web.Mail.SmtpMail.Send(mmsg);
retornar verdadeiro;
            }
pegar (Exceção ex)
            {
retorna falso;
            }
        }