起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: wj0623

【结贴】邮件发送**

[复制链接]
发表于 2008-6-13 11:49:34 | 显示全部楼层
贴代码,和项目关联配置的图
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-13 15:39:06 | 显示全部楼层
unit YJTS;

interface

uses
   Business.System, Business.Forms, Business.Data, Business.Model, Justep.Tools.Mail;

type
  TYJTS = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    MessageExchanger1: TMessageExchanger;
    Message1: TMessage;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    {private declarations}
  public
    {public declarations}
  end;

implementation

procedure TYJTS.Button2Click(Sender: TObject);
begin
  close;
end;

procedure TYJTS.Button1Click(Sender: TObject);
var
  SendMailExchang: TMessageExchanger;  //用于发送邮件的交换机
  lAccount: TMailAccount;
  MailSystem: TMailSystem;
  lMailContent: TMemoryStream;
  lMessage: TMessage;
begin
  MailSystem := TMailSystem.Create;
  SendMailExchang := TMessageExchanger.Create(nil);
  lMessage := TMessage.Create(nil);
  lAccount := TMailAccount.Create;
  try
    SendMailExchang.MessageKind := TMessageKind.mkSend;
    lMessage.From := 'xxx@sohu.com';  //发件人
    lMessage.SendTo := 'xxx@sohu.com';  //收件人
    lMessage.BCC := 'xxx@sohu.com';
    lMessage.CC := 'xxx@sohu.com';
    lMessage.Subject := '测试邮件';  //邮件标题
    lMessage.Body.Text := '这是一封测试邮件!邮件正文';   //正文
    lMessage.ContentFormatType := TContentFormatType.ftText;  // 设置正文内容格式
    lMessage.Date := business.System.SysUtils.DateToStr(business.System.SysUtils.now());
      //根据邮件的发件人获取发送邮件的帐号,
      //此帐号是从Business邮件系统中设置的帐号中获得的
      //如果使用自定义的发送帐户,请重新设置lAccount对象的相关属性
    lAccount := MailSystem.FindAccountByAddress(lMessage.From);
    if lAccount <> nil then
    begin
      lMailContent := TMemoryStream.Create;  //用于存放邮件的正文
      lMailContent.Clear;
      lMessage.SaveToStream(lMailContent);
      lMailContent.Position := 0;  //移动流的指针
      try
        if lAccount.Verify then
        begin
          if lAccount.DifferPOP then
            SendMailExchang.SMTPMessages.Add(lAccount.VerifyAccount,
              lAccount.VerifyPassword, lAccount.SMTPHost,
              lMessage.From, lMessage.SendTo, lMailContent, lAccount.SMTPPort)
          else
            SendMailExchang.SMTPMessages.Add(lAccount.UserID, lAccount.Password,
              lAccount.SMTPHost, lMessage.From, lMessage.SendTo, lMailContent,
              lAccount.SMTPPort);
        end
        else
          SendMailExchang.SMTPMessages.Add(lAccount.SMTPHost, lMessage.From,
            lMessage.SendTo, lMailContent, lAccount.SMTPPort);
      finally
        lMailContent.Free;
        lAccount.Free;
      end;
        SendMailExchang.Active := True;  //发送邮件
    end;
  finally
    lMessage.Free;
    MailSystem.Free;
    SendMailExchang.Free;  //  SendMailExchang对象一定要最后释放
  end;
end;

end.

1.jpg

1.2 MB, 下载次数: 136

回复 支持 反对

使用道具 举报

发表于 2008-6-13 18:13:21 | 显示全部楼层
你在Uses  加上   MAILLIBRARY单元
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-15 12:57:55 | 显示全部楼层
编译通过但是邮件发不出去!发送外部邮件
procedure TYJT.Button1Click(Sender: TObject);
var
  SendMailExchang: TMessageExchanger;
  lMessage: TMessage;
  lAccount: TMailAccount;
  MailSystem: TMailSystem;
  lMailContent: TMemoryStream;
begin
  SendMailExchang := TMessageExchanger.Create(nil);
  lMessage := TMessage.Create(nil);
  lAccount := TMailAccount.Create;
  MailSystem := TMailSystem.Create;
    try
    SendMailExchang.MessageKind := TMessageKind.mkSend;
    lAccount.SMTPHost:='smtp.126.com';
    lAccount.SMTPPort:=25;
    lMessage.From := 'BBX';  //发件人
    lMessage.SendTo := 'luozhongliang2006@126.com';  //收件人
    lMessage.Subject := '告警提示!';             //mail tatil
    lMessage.Body.Text := '邮件测试!多多打扰请谅解!';    //mail context
    lMessage.Date := business.System.SysUtils.DateToStr(business.System.SysUtils.now());
try
SendMailExchang.SMTPMessages.Add(lAccount.SMTPHost, lMessage.From,
            lMessage.SendTo, lMailContent, lAccount.SMTPPort);
      finally
        lMailContent.Free;
        lAccount.Free;
     // end;
        SendMailExchang.Active := True;  //发送邮件
    end;
  finally
    lMessage.Free;
    MailSystem.Free;
    SendMailExchang.Free;  //  SendMailExchang对象一定要最后释放
    dialogs.showmessage('邮件发送成功!');
end;
end;
回复 支持 反对

使用道具 举报

发表于 2008-6-16 08:38:45 | 显示全部楼层
126邮箱服务器需要身份验证的
回复 支持 反对

使用道具 举报

发表于 2008-6-16 08:38:50 | 显示全部楼层
需要在uses部分添加邮件库的名空间引用:MailLibrary
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 09:10:54 | 显示全部楼层
程序编译通过,那如果要向126 yahoo 等发送邮件怎么修改代码呢?
回复 支持 反对

使用道具 举报

发表于 2008-6-16 09:42:53 | 显示全部楼层
lAccount的这几个属性要设置
MailAddress  
UserID
Password
Verify := True;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-16 17:51:35 | 显示全部楼层
问题已经解决!!!非常感谢Akon!!!结贴!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 01:51 , Processed in 0.044238 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表