Administration -> setup -> E-mail parameters下设置参数,根据你的实际情况设置对应参数:
void SendemailDemo()
{
InteropPermission interopPermission;
SysEmailParameters parameters = SysEmailParameters::find();
SysMailer mailer = new SysMailer();
#Sysmailer
;
If(parameters.SMTPRelayServerName)
{
Mailer.SMTPReplayServer(parameters.SMTPServerIPAddress,
Parameters.SMTPPortNumber,
Parameters.SMTPUserName,
SysEmailParameters::password(),
Parameters.NTLM);
}
Else if(parameters.SMTPServerIPAddress)
{
Mailer.SMTPReplayServer(parameters.SMTPServerIPAddress,
Parameters.SMTPPortNumber,
Parameters.SMTPUserName,
SysEmailParameters::password(),
Parameters.NTLM);
}
Else
{
Return;
}
interopPermission = new InteropPermission(InteropKind::ComInterop);
interopPermission.assert();
CodeAccessPermission::revertAssert();
mailer.fromAddress(parameters.SMTPUserName);// 邮件服务器域下的发件邮箱地址
mailer.tos().appendAddress(“test@163.com”); //收件人地址
mailer.ccs().appendAddress(“test2@163.com"); //抄送给该地址
mailer.bccs().appendAddress(“test3@163.com"); //秘密抄送给该地址
mailer.subject(“邮件主题”);
mailer.htmlBody(“邮件正文”);
mailer.attachments().add(“c:/david/test.txt”);//附件,我的路径格式是在VISTA下,所以用‘/’
try
{
interopPermission = new InteropPermission(InteropKind::ComInterop);
interopPermission.assert();
mailer.sendMail();
CodeAccessPermission::revertAssert();
}
Catch(Exception::Error)
{
}
}
注:interPermission用来请求调用特定API,有关这类API可以参考:http://msdn.microsoft.com/en-us/library/aa852189.aspx
CodeAccessPermission::revertAssert()起到一个定界的作用,表示InterPermission的请求到此结束。
错误定位:如果你在使用SMTP发送邮件是发生错误,首先检查SMTP服务器是否在正常运行,可以Ping或使用其他SMTP工具来检查;其次,在调用特定API前一定要先获得Permission;最后,如果你的邮件中包含附件,请确认你代码运行在服务器端还是客户端,然后确认路径。