用Delphi发邮件
用DELPHI发邮件
控件
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
代码
IdSMTP1.Host:='smtp.163.com';
IdSMTP1.Port:=25;
IdSMTP1.Username:='发信人名称;
IdSMTP1.Password:='发信人邮箱密码';
IdSMTP1.Connect();
IdMessage1.Body.Clear;
IdMessage1.Body.Add(信的内容);
IdMessage1.From.Text:='从哪发的,应该可以邮箱欺骗';
IdMessage1.Recipients.EMailAddresses:='发到哪个邮箱';
IdMessage1.Subject:='邮件题目';
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Authenticate;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
end;
重点来了,有朋友试验这个代码说不好用,刚开始我测试也不行,在csdn上用了几百分也没弄明白是怎么回事,
后来一个偶然的机会发现,用新注册的邮箱用这个代码是发不了了,用用过一段时间的邮箱就可以发,新注册用户只能通过web方式发邮件,
估计与在论坛注册的新用户在某个设定时间内发不了帖子是一个道理。
或者:
我写了一个发邮件的函数,包你满意
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls, IdComponent,
IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, IdBaseComponent,
IdMessage;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
TLoginEmailServer=record
SMTPHost:string;
SMTPPort:integer;
Username:string;
Password:string;
SmtpAuthType:integer;
end;
function SendEmail(poSMTPServer:TLoginEmailServer;poBody:Tstrings;psFromEmial,
psToEmail,psSubject:string;psContentType:string;
CCToEmail:string;poAttachmentPath:TStrings):integer;
var
loIdMsgSend: TIdMessage;
loSMTP: TIdSMTP;
i:integer;
begin
Result:=3;
loIdMsgSend:=nil;
loSMTP:=nil;
try
loIdMsgSend:=TIdMessage.Create(nil);
loSMTP:=TIdSMTP.Create(nil);
with loIdMsgSend do
begin
ContentType:=psContentType;
From.Text := psFromEmial;
ReplyTo.EMailAddresses := psFromEmial;
Recipients.EMailAddresses := psToEmail;
CCList.EMailAddresses:=CCToEmail;
Subject := psSubject;
Priority := mpHigh;
ReceiptRecipient.Text := '';
Body.Assign(poBody);
if Assigned(poAttachmentPath) then
begin
for i := 0 to poAttachmentPath.Count-1 do
begin
TIdAttachment.Create(loIdMsgSend.MessageParts,poAttachmentPath.Strings[i]);
end;
end;
end;
with loSMTP do
begin
Host :=poSMTPServer.SMTPHost;
Port := poSMTPServer.SMTPPort;
if poSMTPServer.SmtpAuthType=1 then
AuthenticationType:=atLogin
else
AuthenticationType:=atNone;
Username := poSMTPServer.Username;
Password := poSMTPServer.Password;
try
Connect;
Send(loIdMsgSend);
except
result:=2;
exit;
end;
Result:=0;
end;
finally
loIdMsgSend.Free;
loSMTP.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SendEmail(.........);
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
begin
try
IdSMTP1.AuthenticationType:=atLogin; //设置登陆类型
IdSMTP1.Username:=Edit1.Text; //设置登陆帐号
IdSMTP1.Password:=Edit2.Text; //设置登陆密码
IdSMTP1.Host:=Edit3.Text; //设置SMTP地址
IdSMTP1.Port:=strtoint(Edit4.Text); //设置端口 必须转化为整型
IdSMTP1.Connect; //开始连接服务器
except
Showmessage('连接失败,请重试!');
Exit; //连接失败 的话 退出该执行过程
end;
IdMessage1.Body.Clear; //先清空上次发送的内容
IdMessage1.Subject:=Edit5.Text; //设置邮件发送的标题
IdMessage1.Body.Assign(Memo1.Lines); //设置邮件发送的主体
IdMessage1.From.Address:=Edit6.Text; //设置邮件的发件人 也就是说该邮件来自什么地方
IdMessage1.Recipients.EMailAddresses:=Edit7.Text; //收件人的地址
try
idSMTP1.Send(IdMessage1);
Showmessage('邮件发送成功!');
except
Showmessage('邮件发送失败!');
end;
end;
--咳,又忘了出处。。老早以前保存的。。。抱歉抱歉
用Delphi发邮件相关推荐
- 利用exchangelib快速上手使用python发邮件
前言 之前一直知道使用python smtp发邮件,但是最近发现一个神器exchangelib,用这个神器发邮件,简直简单的不能再简单了,官方文档在这里 实例 只需要将下面的xxx改成你的信息就可以了 ...
- 公司内部exchange2010 下删除误发邮件
1.Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 2.get-mailbox | search-mailbox -Search ...
- 自动发邮件的程序 c语言,5分钟!教你用C语言发送邮件:附送源码+教学!
5分钟!教你用C语言发送邮件:附送源码+教学!-1.jpg (10.71 KB, 下载次数: 0) 2018-9-3 02:21 上传 关注<一碳科技>,获取更多知识! 前言 相信年夜家都 ...
- 创建oracle发邮件job导致的故障
前几天创建了个发邮件的存储过程,想把数据库每天的运行情况自动发到邮箱,没想到第二天就出了问题,在dbms/trace目录下产生了大量的xxx_j000_xxx.trc文件,一分钟产生2个.alter日 ...
- MDaemon 10.1.2 通过Webclient发邮件时,提示“发邮件时发生错误
MDaemon 10.1.2 通过Webclient发邮件时,提示"发邮件时发生错误",经查发现服务里边有个Simple mail transfer protocol 服务被启用, ...
- 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。...
猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 简介 iOS中的很多小功能都 ...
- vba给服务器发送消息,使用VBA实现发邮件功能
财务MM经常要给员工发送每月的工资信息,一个个发送实在是太忙了.本文将介绍使用VBA实现工资信息的自动发送.有了这个功能,财务MM只需要把基本数据准备好,然后按下按钮只要选择需要发送的对象.就可以快速 ...
- 【知识积累】JavaMail实现发邮件功能
一.前言 今天闲来没事,想着通过程序来给别人发邮件.于是,上网搜了一下,相应的资料也很多,刚开始完成了邮件的简单发送,后来想如何能发送附件,继续寻找 答案,但是遇到了一个问题是当我使用txt类型作为附 ...
- python自动化发送邮件_python接口自动化(三十三)-python自动发邮件总结及实例说明番外篇——下(详解)...
简介 发邮件前我们需要了解的是邮件是怎么一个形式去发送到对方手上的,通俗点来说就是你写好一封信,然后装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去,其他的就不关心了,只是关心时间,而电子邮 ...
最新文章
- JqGridView 1.0.0.0发布
- 时隔四年回归的澎湃芯片,能为雷军赌上一生荣耀的造车创业带来什么?
- IOS开发笔记16-Object-C中的属性
- linux 内核中基于netfilter的编译选项
- 算法的性能评价------空间复杂度和时间复杂度
- BZOJ1044: [HAOI2008]木棍分割 (二分 + DP)
- IntelliJ IDEA14 配置 SVN
- vscode markdown插件_如何用Markdown写公众号
- 牛客题霸 [矩阵查找] C++题解/答案
- python用pip安装pillow_cent 6.5使用pip安装pillow总是失败
- jupyter notebook中创建环境、安装使用pytorch
- webstormjs文件全部报错_springboot启动报错org.yaml.snakeyaml.error.YAMLException...
- 社交巨人屏蔽Google搜索 Facebook发展强劲拟上市
- 干货 | 收藏贴!一文看懂静态资源服务沉浮及其在携程的演进
- springboot项目日志记录访问客户端ip地址
- 华清远见java学习心得
- Camera 面试总结
- 轻量化 | 如何让笨重的深度学习模型在移动设备上跑起来?看它!
- html5扩展函数的使用方法,知识分享:JavaScript基础语法
- java抓取数据包查询12306余票信息