Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit utils_email;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils, smtpsend, mimepart;
- {
- Exemplo de uso da unit utils_email:
- var
- Sender, Recipient, CC, BCC, Subject, Body, Attachments, ResultMsg: string;
- begin
- Sender := 'seu_email@exemplo.com';
- Recipient := 'destinatario@exemplo.com';
- CC := 'copia@exemplo.com';
- BCC := 'copiaoculta@exemplo.com';
- Subject := 'Assunto do Email';
- Body := 'Conteúdo do email.';
- Attachments := 'caminho_para_anexo1' + sLineBreak + 'caminho_para_anexo2';
- ResultMsg := SendEmail(Sender, 'senha_do_email', Recipient, CC, BCC, Subject, Body, Attachments);
- if ResultMsg = '' then
- writeln('Email enviado com sucesso')
- else
- writeln('Erro ao enviar email: ', ResultMsg);
- end;
- }
- function SendEmail(const AFrom, APassword, ATo, ACC, ACCO, ASubject, ABody, AAttachments: string): string;
- implementation
- function SendEmail(const AFrom, APassword, ATo, ACC, ACCO, ASubject, ABody, AAttachments: string): string;
- var
- SMTP: TSMTPSend;
- MsgBody: TStringList;
- AttachmentList: TStringList;
- i: Integer;
- MimeMsg: TMimePart;
- AttachmentStream: TMemoryStream;
- FileExistsFlag: Boolean;
- ErrorMsg: string;
- begin
- Result := ''; // Se tudo der certo, retornará uma string vazia.
- ErrorMsg := ''; // Variável para armazenar erros
- SMTP := TSMTPSend.Create;
- MsgBody := TStringList.Create;
- AttachmentList := TStringList.Create;
- MimeMsg := TMimePart.Create;
- try
- try
- // Configura os dados de login do SMTP
- SMTP.UserName := AFrom;
- SMTP.Password := APassword;
- SMTP.TargetHost := 'smtp.seuprovedor.com'; // Defina o servidor SMTP correto
- SMTP.TargetPort := '25'; // Defina a porta adequada (25, 587, 465)
- // Adiciona o corpo do e-mail à mensagem MIME
- MimeMsg.Clear;
- MimeMsg.MimeType := 'multipart/mixed'; // <- erro NAO TEM ESSE METODO
- MimeMsg.AddPartText(ABody); // <- erro NAO TEM ESSE METODO
- // Verifica se todos os arquivos indicados existem
- AttachmentList.Text := AAttachments;
- FileExistsFlag := True;
- for i := 0 to AttachmentList.Count - 1 do
- if not FileExists(AttachmentList[i]) then
- begin
- ErrorMsg := 'Arquivo não encontrado: ' + AttachmentList[i];
- FileExistsFlag := False;
- Break;
- end;
- // Se houve erro ao verificar os arquivos, pular o envio
- if not FileExistsFlag then
- begin
- Result := ErrorMsg;
- Exit;
- end;
- // Adiciona os anexos à mensagem MIME
- for i := 0 to AttachmentList.Count - 1 do
- begin
- AttachmentStream := TMemoryStream.Create;
- try
- AttachmentStream.LoadFromFile(AttachmentList[i]);
- MimeMsg.AddPartBinary(AttachmentStream, ExtractFileName(AttachmentList[i])); // <- erro NAO TEM ESSE METODO
- finally
- AttachmentStream.Free;
- end;
- end;
- // Configura os destinatários e cabeçalhos
- SMTP.MailFrom(AFrom, Length(MimeMsg.Lines.Text));
- SMTP.MailTo(ATo);
- if ACC <> '' then
- SMTP.MailTo(ACC); // Enviar cópia
- if ACCO <> '' then
- SMTP.MailTo(ACCO); // Enviar cópia oculta
- // Conectar e enviar o email
- if SMTP.Login then
- begin
- if not SMTP.MailData(MimeMsg.Lines) then
- Result := 'Erro ao enviar dados do email';
- if not SMTP.Logout then
- Result := 'Erro ao desconectar do servidor SMTP';
- end
- else
- Result := 'Erro ao conectar no servidor SMTP';
- except
- on E: Exception do
- Result :=
- 'Erro "' + E.Message + '": ' + sLineBreak +
- 'Unidade: ' + {$I %FILE%} + sLineBreak +
- 'Linha: ' + {$INCLUDE %LINE%} + sLineBreak +
- 'Método: ' + {$I %CURRENTROUTINE%} + sLineBreak;
- end;
- finally
- SMTP.Free;
- MsgBody.Free;
- AttachmentList.Free;
- MimeMsg.Free;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement