Este post é para aqueles que usam IIS como webserver e precisam mandar emails a partir de uma página em VBScript (ASP clássico) ou PHP (CGI ou FastCGI) . Também é requisito usar um servidor SMTP remoto, porque eu não vou ensinar a configurar o Windows como servidor de email.
O segredo é usar os objetos COM da família CDO. A documentação online desses objetos é escassa, incompleta e incoerente, mas há bastantes exemplos de código para copiar-e-colar. O exemplo abaixo mostra como enviar um email usando VBScript e um servidor SMTP localizado em smtp.imeiu.net.
'criando o objeto
Set myMail=CreateObject("CDO.Message")
'assunto
myMail.Subject="Exemplo de mensagem"
'remetente
myMail.From="fulanodetal@servidor.com"
'destinatario
myMail.To="beltrano@outroservidor.com"
'corpo da mensagem
myMail.TextBody="Exemplo de corpo de mensagem"
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
'Servidor SMTP remoto
myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.imeiu.net"
'Porta do servidor remoto
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25
myMail.Configuration.Fields.Update
myMail.Send
set myMail=nothing
A seguir temos um exemplo análogo em PHP. A função mail() não funciona no IIS, a não ser que o servidor local seja configurado como servidor de email.
//criando o objeto
$myMail=new COM("CDO.Message");
//assunto
$myMail->Subject="Exemplo de mensagem";
//remetente
$myMail->From="fulanodetal@servidor.com";
//destinatario
$myMail->To="beltrano@outroservidor.com";
//corpo da mensagem
$myMail->HTMLBody="Exemplo de corpo de mensagem";
//sempre use 2
$myMail->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"] = 2;
//Servidor SMTP
$myMail->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"] = "smtp.imeiu.net";
//porta do servidor
$myMail->Configuration->Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"] = 25;
//atualiza e manda
$myMail->Configuration->Fields->Update();
$myMail->Send();
Naturalmente, este artifício só pode funcionar no Windows, pois o Linux não tem objetos COM.
Nenhum comentário:
Postar um comentário