http://fayland.org/journal/NetSMTP.html
Category: Modules Keywords: Net::SMTP mail
Code
如下代码为用163.com的SMTP来发送邮件。
#!/usr/bin/perl
use Net::SMTP;
my $mailhost = "smtp.163.com"; # the smtp host
my $mailfrom = 'notfour@163.com'; # your email address
my @mailto = ('fayland@gmail.com', 'not_four@hotmail.com'); # the recipient list
my $subject = "此为标题";
my $text = "此为正文\n第二行位于此。";
$smtp = Net::SMTP->new($mailhost, Hello => 'localhost', Timeout => 120, Debug => 1);
# anth login, type your user name and password here
$smtp->auth('user','pass');
foreach my $mailto (@mailto) {
# Send the From and Recipient for the mail servers that require it
$smtp->mail($mailfrom);
$smtp->to($mailto);
# Start the mail
$smtp->data();
# Send the header
$smtp->datasend("To: $mailto\n");
$smtp->datasend("From: $mailfrom\n");
$smtp->datasend("Subject: $subject\n");
$smtp->datasend("\n");
# Send the message
$smtp->datasend("$text\n\n");
# Send the termination string
$smtp->dataend();
}
$smtp->quit;
TroubleShooting/Code Analysis
- 为什么要 $stmp->auth('user','pass');
大部分SMTP服务器为了防止 spam /垃圾邮件,就需要用户验证身份。
此方法需要另外安装模块:Authen::SASL, 此模块可能系统不自带。
如果系统为虚拟主机,而此模块无法安装,可使用Socket模块进行最直接的操作。详细的代码可以参考脚本LeoBBS或书籍《Perl网络编程》。
- Debug => 1
此段代码用于测试之用,所以开启了Debug,一般测试一次完毕,正式使用的话会关闭它。
- 需要注意的是发信人和收信人的地址要用单引号,或者用"fayland\@gmail.com"。如果是个变量,需要用正则先将其转换。
$mailto =~ s/\@/\\\@/;
- 我想发送附件,该如何做?
参考《Perl网络编程》。
邮件发送过程的简单介绍
SMTP协议由文档rfc821定义。
在rfc821协议中定义了两个角色,即发送者(用S表示,指发送邮件的程序)和接收者(用R表示,指SMTP服务器)。
- 在 S 和 R 通过套接连接后,S应当先向R表明身份,此过程用helo命令完成,helo后连接发送者的域名(可用localhost)。而R的回答是一个表示连接成功的状态码和服务器身份等。例如:
S: helo 1313s.com
R: 220 server.com Simple Mail Transfer Service Ready
在rfc821定义的状态码中,通常以2或3开头的表示成功,以4或5开头的表示传输过程出现了问题。
如果是需要服务器身份验证的话,还用发送AUTH LOGIN。
- 发送头文件。
S: MAIL FROM:
R: 250 OK
S: RCPT TO:
R:
这里的recipient的地址如果是在SMTP同一服务器上且服务器找不到此地址,就会回答"550 No such user here"。
- 发送正文。以DATA开始。以两个换行结束。
S: DATA
R: 354 Start mail input; end with (两个换行)
S: To: recipient@whereau.com
S: From: someone@somewhere.com
S: subject: title
S: ...
S: text
S: etc.
S:
S:
R: 250 OK
- 退出连接。
S: QUIT
R: 221 server.com Service closing transmission channel
以上就是简易的连接过程。当开启Net::SMTP的debug的时候,就会输出类似于此连接过程的东西。
分享到:
相关推荐
SMTP测试工具是用于验证计算机是否能够通过SMTP服务器成功发送邮件的应用程序。这样的工具对于排查邮件发送问题、配置验证以及诊断网络连接问题非常有用。 SMTP测试邮件发送工具的核心功能包括: 1. **服务器配置...
4. **发送邮件**:使用SMTP命令“MAIL FROM:”指定发件人地址,“RCPT TO:”指定收件人地址,然后使用“DATA”命令发送邮件头和正文。完成后,发送“.”作为数据结束标记。 5. **断开连接**:发送“QUIT”命令以...
在C++中,实现SMTP发送邮件通常需要一个库来处理网络通信和SMTP协议细节。在这个案例中,文件名"CSMTP_SSL"可能是一个C++库,用于支持SSL/TLS加密的安全SMTP通信。SSL(Secure Sockets Layer)和其继任者TLS...
【使用PHP通过SMTP发送邮件】知识点详解 在PHP中,虽然内置了`mail()`函数用于发送邮件,但由于其灵活性不足,且不支持SMTP验证,在某些情况下可能无法正常工作,因此对于需要更高级功能的场景,如SMTP验证或通过...
SMTP会话启动后,可以使用`send_message`方法发送邮件。它需要三个参数:邮件内容、发件人地址和收件人地址。例如: ```ruby message = "From: me@fromdomain.com\nTo: test@todomain.com\nSubject: Test\n\nThis...
当用户想要发送邮件时,客户端应用会与SMTP服务器建立连接,然后按照SMTP协议的命令交互,如HELO(你好)、MAIL FROM(发件人)、RCPT TO(收件人)、DATA(邮件数据)等,最后用`.`作为邮件内容的结束标志。...
Java SMTP 发送邮件是Java开发中常见的功能,用于在应用程序中...总的来说,Java SMTP发送邮件涉及JavaMail API的使用,SMTP服务器的配置,以及邮件内容的构建。理解这些知识点,就能轻松地在Java项目中实现邮件功能。
发送邮件时,需要与SMTP服务器建立TCP连接,然后按照规定的命令序列进行交互,如HELO/EHLO、AUTH、MAIL FROM、RCPT TO、DATA和QUIT等。 2. **网络通信模块**:易语言提供了“网络”类库,包含了TCP/IP通信的基本...
当用户通过电子邮件客户端发送邮件时,SMTP客户端(易语言源码中实现的部分)会与SMTP服务器建立连接,然后按照以下步骤进行通信: 1.1. 连接:发件人的SMTP客户端连接到SMTP服务器,通常使用TCP端口25。 1.2. ...
而Java Socket库则提供了实现SMTP客户端所需的基本功能,允许我们创建连接到SMTP服务器的套接字,并通过这个连接发送邮件。以下是一些关键知识点: 1. **Java Socket类**:Java的`java.net.Socket`类是网络通信的...
在编程领域,开发SMTP邮件发送模块是为了实现程序自动发送邮件的功能,广泛应用于通知、提醒、报告等场景。这个源码可能是用VC(Visual C++)编写的,适合Windows平台的应用程序开发。 在SMTP邮件发送过程中,主要...
- 发送邮件头部:发送包含发件人、收件人、主题等信息的邮件头部。 - 发送邮件正文:将邮件内容以ASCII或MIME格式发送。 - 断开连接:发送完邮件后,关闭与SMTP服务器的连接。 6. **错误处理**:源码中应包含...
C# 使用 163 的 SMTP 服务器发送邮件 在本文中,我们将介绍如何使用 C# 语言通过 163 的 SMTP 服务器发送邮件。首先,我们需要了解 System.Net.Mail.SmtpClient 类,它是 C# 中专门用来请求 SMTP 服务器发送邮件的...
2. **发送邮件功能**:用户应能输入收件人和抄送人的邮箱地址,设定邮件主题和内容,并有添加附件的功能。 3. **交互信息展示**:客户端需实时显示邮件发送过程中的命令和参数,以便用户了解邮件传输状态。 在界面...
### C# 实现 SMTP 发送邮件功能 ...通过以上步骤,我们已经成功实现了使用 C# 语言结合 SMTP 协议发送邮件的功能。这项技术对于构建自动化任务、用户通知等功能具有重要意义。希望本文能对你有所帮助。
##### (一)利用知名邮件服务提供商的SMTP发送邮件 为了使用知名邮件服务提供商的SMTP服务,例如新浪、搜狐、网易等,你需要在其官方网站上注册一个免费邮箱账号,并使用该邮箱账户进行身份验证。这有助于避免大量...
在本示例中,我们将探讨如何使用PHP通过SMTP发送邮件。 首先,我们来看`email.class.php`文件。这个文件通常包含一个PHP类,用于封装邮件发送的功能。这个类可能会有一个构造函数,用来设置SMTP服务器的地址、端口...
SMTP(Simple Mail Transfer Protocol)是互联网上用于发送电子邮件的标准协议,易语言通过实现SMTP功能,可以让用户编写程序来发送邮件。 这篇"易语言源码易语言SMTP邮件发送源码"提供了在易语言环境下实现SMTP...
描述中提到了一个sample,这可能是一个简单的示例项目,演示如何集成和使用SMTP发送邮件。在这个名为"MailComposer"的子文件中,可能包含了实现邮件发送的主要代码。通常,这样的示例会包含以下步骤: 1. **安装库*...
以上就是使用Perl通过SMTP发送邮件的基本过程。通过这种方式,你可以创建自动化报告、通知或者任何需要通过邮件发送的信息。如果你在处理过程中遇到问题,例如服务器连接问题、认证错误等,通常需要检查网络设置、...