通过Delphi发送电子邮件

时间:2013-06-10 09:27:07

标签: delphi email gmail sender

我从未使用过Delphi(我的女朋友有一些经验),但我想制作一个小工具,我认为它应该在Delphi上制作。经过数小时的搜索和测试后,我们发现只有本指南(http://delphi.about.com/od/indy/a/email-send-indy.htm)不起作用,按下发送电子邮件按钮时会出现巨大错误。

我正在尝试制作一个随我的游戏发布的工具,并允许用户在出现问题或反馈时向我发送电子邮件(发送到我的Gmail)。他将输入他的电子邮件,附上截图并填写评论框,不需要其他内容。谢谢,我会非常感谢任何帮助。

2 个答案:

答案 0 :(得分:8)

这是发送电子邮件的简单例程。我想你可以修改它以满足你的需求:

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 := 'xxxx@gmail.com';
    Msg.Recipients.EMailAddresses := 'xxxx@gmail.com';
    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 := 'xxxx@gmail.com';
      SMTP.Password := '@#$%';
      SMTP.Connect;
      SMTP.Send(Msg);
    finally
      SMTP.Free;
    end;
  finally
    Msg.Free;
  end;
end;

PS:请注意,您必须使用自己的电子邮件地址替换xxxx@gmail.com,而不是用户的电子邮件地址。您可以将他们的电子邮件地址包含在崩溃报告的正文中。

答案 1 :(得分:4)

IMO,电子邮件无法在100%的时间内发挥作用。你很幸运能得到80%。如果您使用SMTP,防火墙和ISP必须允许它。如果您使用现有的电子邮件客户端,则需要依赖正确的配置。一个典型的情况是他们使用Gmail或Yahoo,然后你尝试通过“已经在系统上的imap电子邮件”发送一些内容,并且用户面对的是他们甚至不知道他们有的旧版Outlook Express或Windows Mail ,但它已经“注册”了Windows作为默认的电子邮件处理程序。这变得丑陋。 我建议通过HTTP发送到您网页上的应用程序。一个PHP脚本,用于将信息和图像记录到MySQL数据库中。实际上,我建议使用像Mantis或FogBugz这样的bug跟踪数据库(来自我们的赞助人!)。我会检查它们,然后如果你喜欢它们提供的东西,通过HTTP帖子(或电子邮件等)提交报告是相当简单的。