O Direct Mail oferece suporte a SMTP e permite enviar e-mails programaticamente com bibliotecas SMTP de qualquer linguagem ou ferramentas padrão de linha de comando.
Pré-requisitos
Antes de enviar e-mails via SMTP, defina uma senha SMTP para o endereço de remetente.
Faça login no console do Direct Mail.
No painel de navegação à esquerda, clique em Sender Addresses.
Localize o endereço de remetente desejado e clique em Set SMTP Password na coluna Actions.
Insira uma senha SMTP e clique em OK.
Funcionamento do envio SMTP
O Simple Mail Transfer Protocol (SMTP) transfere mensagens mediante troca de comandos e respostas entre cliente e servidor. O cliente envia um comando e o servidor retorna uma confirmação. O remetente controla esse processo.
Para consultar a especificação completa do protocolo, acesse RFC5321.
Os servidores SMTP dividem-se em duas categorias:
smtpd (servidor de envio de e-mail): exige autenticação do remetente antes de aceitar mensagens de saída.
mx (servidor de recebimento de e-mail): aceita mensagens de entrada entregues de domínios externos para usuários locais.
O servidor do Direct Mail atua como smtpd. O nome de usuário para autenticação deve corresponder exatamente ao endereço de remetente, e a senha deve ser aquela definida no console.
Para enviar e-mails pelo código da aplicação, use uma biblioteca SMTP compatível com sua linguagem em vez de comandos SMTP brutos. Consulte Exemplos de chamada SMTP.
Detalhes da conexão
|
Parâmetro |
Valor |
|
Host |
|
|
Porta (não criptografada) |
|
|
Porta (TLS/SSL) |
|
|
Autenticação |
AUTH LOGIN com nome de usuário e senha codificados em Base64 |
|
Nome de usuário |
Seu endereço de remetente (ex.: |
|
Senha |
A senha SMTP definida no console do Direct Mail |
Fluxo da sessão SMTP
Toda sessão SMTP segue esta sequência:
Conecte-se ao servidor SMTP usando
telnet(não criptografado) ouopenssl s_client(TLS).Envie
EHLOpara identificar o cliente e negociar capacidades.Envie
AUTH LOGINe forneça as credenciais codificadas em Base64.Envie
MAIL FROMpara especifique o endereço do remetente.Envie
RCPT TOpara especifique o endereço do destinatário.Envie
DATAseguido pelos cabeçalhos e pelo corpo da mensagem.Envie
.(um ponto isolado) para sinalizar o fim do corpo da mensagem.Envie
QUITpara encerrar a sessão.
Exemplos
Os exemplos abaixo demonstram sessões SMTP completas com ferramentas de linha de comando. S: indica a resposta do servidor; C: indica o comando do cliente. No Linux, use echo -n Content|base64 para codificar valores em Base64.
Não criptografado (porta 80)
$telnet smtpdm.aliyun.com 80
S:220 smtp.aliyun-inc.com MX AliMail Server(127.0.0.1)
C:EHLO test.com
S:250-smtp.aliyun-inc.com
S:250-8BITMIME
S:250-AUTH=PLAIN LOGIN XALIOAUTH
S:250-AUTH PLAIN LOGIN XALIOAUTH
S:250-PIPELINING
S:250 DSN
C:AUTH LOGIN
S:334 dXNlcm5hbWU6
C:YSoqKkBleGFtcGxlLm5ldA== Note: The Base64 encoding of the username a***@example.net.
S:334 UGFzc3dvcmQ6
C:dGVzdA== Note: The Base64 encoding of the user password test.
S:235 Authentication successful
C:MAIL FROM: <a***@example.net> Note: Enclose the sender address in angle brackets (<>).
S:250 Mail Ok
C:RCPT TO: <a***@example.net>
S:250 Rcpt Ok
C:DATA
S:354 End data with <CR><LF>.<CR><LF>
C:subject: test
C:from: <a***@example.net>
C:to: <a***@example.net>
C:
C:test
C:.
S:Data Ok: queued as freedom ###envid=148316944
C:QUIT
S:221 Bye
Criptografado (porta 465, TLS)
Primeiro, conecte-se com o OpenSSL. Escolha um dos comandos abaixo conforme a versão do TLS desejada:
openssl s_client -connect smtpdm.aliyun.com:465 -crlf
or
openssl s_client -connect smtpdm.aliyun.com:465 -tls1 -cipher AES128-SHA -crlf
openssl s_client -connect smtpdm.aliyun.com:465 -tls1_1 -cipher AES128-SHA -crlf
openssl s_client -connect smtpdm.aliyun.com:465 -tls1_2 -cipher AES128-GCM-SHA256 -crlf
openssl s_client -connect smtpdm.aliyun.com:465 -tls1_3 -cipher AES128-GCM-SHA256 -crlf
Após conectar-se ao OpenSSL, insira os comandos a seguir na mesma janela, uma linha por vez:
$openssl s_client -connect smtpdm.aliyun.com:465 -crlf
***
***
***
S:220 DirectMail Smtpd Server(127.0.0.1)
C:EHLO test.com
S:250-smtp.aliyun-inc.com
S:250-8BITMIME
S:250-AUTH=PLAIN LOGIN XALIOAUTH
S:250-AUTH PLAIN LOGIN XALIOAUTH
S:250-PIPELINING
S:250 DSN
C:AUTH LOGIN
S:334 dXNlcm5hbWU6
C:YSoqKkBleGFtcGxlLm5ldA== Note: The Base64 encoding of the username a***@example.net.
S:334 UGFzc3dvcmQ6
C:dGVzdA== Note: The Base64 encoding of the user password test.
S:235 Authentication successful
C:MAIL FROM: <a***@example.net> Note: Enclose the sender address in angle brackets (<>).
S:250 Mail Ok
C:rcpt to: <a***1@example.net> Note: Use lowercase for rcpt to. Uppercase may not be recognized.
S:250 Rcpt Ok
C:DATA
S:354 End data with <CR><LF>.<CR><LF>
C:subject: test
C:from: <a***@example.net>
C:to: <a***1@example.net>
C:
C:test
C:.
S:250 Data Ok: queued as freedom ###envid=600000105713504612
C:QUIT
S:DONE
Corpo da mensagem e MIME
Os exemplos acima usam corpo de texto simples. Para e-mails com formatação rica (HTML, anexos, assuntos codificados), formate a mensagem conforme a especificação Multipurpose Internet Mail Extensions (MIME). A formatação MIME correta reduz a probabilidade de o servidor de e-mail do destinatário classificar a mensagem como spam.
Para consultar a especificação MIME, acesse RFC2045. Também é possível usar bibliotecas específicas da linguagem nos exemplos de SMTP do Direct Mail para criar mensagens codificadas em MIME.
Para um exemplo passo a passo, consulte Como envio um e-mail com anexo usando SMTP?