Sending email through Delphi

Yordan Sirakov picture Yordan Sirakov · Jun 10, 2013 · Viewed 23.1k times · Source

I have never worked with Delphi (my girlfriend have some experience), but there is a small tool that I want to make and I think it should be made on Delphi. After hours of searching and testing we found only this guide (http://delphi.about.com/od/indy/a/email-send-indy.htm) which doesn't work, it gives a huge error when pressing the Send email button.

I am trying to make a tool that will be distributed with my game and will allow the user to send me an email (to my Gmail) in case of a problem or for feedback. He will enter his email, attach a screenshot and fill in a comment box, doesn't need to have something else. Any help will be highly appreciated as I am stuck, thank you.

Answer

iMan Biglari picture iMan Biglari · Jun 10, 2013

Here's a simple routine to send an email. I guess you can modify it to fit your needs:

procedure SendImage(const Comment, AImage: String);
var
  SMTP: TIdSMTP;
  Msg: TIdMessage;
begin
  if not FileExists(AImage) then
    Exit;
  Msg := TIdMessage.Create(nil);
  try
    Msg.From.Address := '[email protected]';
    Msg.Recipients.EMailAddresses := '[email protected]';
    Msg.Body.Text := Comment;
    TIdAttachmentFile.Create(Msg.MessageParts, AImage);
    Msg.Subject := AImage;
    SMTP := TIdSMTP.Create(nil);
    try
      SMTP.Host := 'smtp.gmail.com';
      SMTP.Port := 25;
      SMTP.AuthType := satDefault;
      SMTP.Username := '[email protected]';
      SMTP.Password := '@#$%';
      SMTP.Connect;
      SMTP.Send(Msg);
    finally
      SMTP.Free;
    end;
  finally
    Msg.Free;
  end;
end;

PS: Note that you have to replace [email protected] with your own email address, and not the user's. You could include their email address in the body of the crash report.