O puede usar la biblioteca Synapse, para enviar un correo usando SMTP, idealmente en su newest snapshot.
Este es el código que debe enviar el correo con archivo adjunto de c:\voucher.pdf
[email protected]
a [email protected]
a la smtp.server.com
con login y contraseña login
password
. Sobre el resto de las funciones de la clase TMimeMess
, lo referiría directamente al the reference.
Espero que esto funcione porque simplifiqué y localicé código mucho más complicado que estoy usando y no puedo verificarlo ni compilarlo. Si no es así, vamos a Downvote it :)
uses
SMTPSend, MIMEPart, MIMEMess;
procedure TForm.SendEmailClick(Sender: TObject);
var
MIMEText: TStrings;
MIMEPart: TMimePart;
MIMEMessage: TMimeMess;
begin
MIMEText := TStringList.Create;
MIMEText.Add('Hello,');
MIMEText.Add('here is the text of your e-mail message,');
MIMEText.Add('if you want the HTML format, use AddPartHTML');
MIMEText.Add('or e.g. AddPartHTMLFromFile if you have your');
MIMEText.Add('HTML message content in a file.');
MIMEMessage := TMimeMess.Create;
with MIMEMessage do
try
Header.Date := Now;
Header.From := '[email protected]';
Header.ToList.Clear;
Header.ToList.Add('[email protected]');
Header.CcList.Clear;
Header.Subject := 'E-mail subject';
Header.XMailer := 'My mail client name';
MIMEPart := AddPartMultipart('mixed', nil);
AddPartText(MIMEText, MIMEPart);
AddPartBinaryFromFile('c:\voucher.pdf', MIMEPart);
EncodeMessage;
if SendToRaw(Header.From, // e-mail sender
Header.ToList.CommaText, // comma delimited recipient list
'smtp.server.com', // SMTP server
Lines, // MIME message data
'login', // server authentication
'password') // server authentication
then
ShowMessage('E-mail has been successfuly sent :)')
else
ShowMessage('E-mail sending failed :(');
finally
Free;
MIMEText.Free;
end;
end;
Actualización:
Según buen comentario de Downvoter step into the light (hombre, cambiar su nick por favor, no es enfríe más :), sería muy malo si va a enviar la lista de todos los destinatarios a todos. Con synapse you cannot agregue BCC al encabezado del mensaje; no hay propiedad Header.BCCList
en MIMEMessage
. En su lugar, puede modificar directamente los datos antes de enviarlos.
// First, you will remove the line where you are adding a recipient to the list
Header.ToList.Add('[email protected]');
// the rest between you can keep as it is and after the message encoding
EncodeMessage;
// and before sending the mail you'll insert the line with BCCs
Lines.Insert(1, 'Bcc: [email protected], [email protected]');
if SendToRaw ...
Voy a dar una oportunidad a esta ruta. el cc no será un problema. La aplicación solo envía un comprobante a un destinatario. El programa genera de 10 a 15 cupones diferentes y los envía por correo electrónico a los clientes de nuestros clientes. Un destinatario en todo el proceso. La implementación actual con Outlook funciona como un amuleto, pero como se indicó, no todos usan Outlook. – JamesW