Perl - 使用带有身份验证的 MIME::Lite 发送电子邮件时遇到问题

Posted

技术标签:

【中文标题】Perl - 使用带有身份验证的 MIME::Lite 发送电子邮件时遇到问题【英文标题】:Perl - Having trouble using MIME::Lite with authentication to send emails 【发布时间】:2011-12-20 12:21:05 【问题描述】:

我正在尝试使用带有身份验证的MIME::Lite 发送电子邮件。

这是我正在尝试的代码 sn-p:

#!/usr/bin/perl

use strict;
use DBI;
use lib '/theannealing.com/perl/';
use MIME::Lite;
use MIME::Base64;
use Authen::SASL;

my $recipient       =   'recipient@email.com';
my $mailman         =   'sender@email.com';
my $cc_recipient    =   'ccrecipient@email.com';
my $subject         =   'Subject';
my $email_message   =   "Message";

my ($user,$pass) = ("username","password");

MIME::Lite->send('smtp','smtp.server:port',AuthUser=>$user, AuthPass=>$pass);
my $email = new MIME::Lite(From => $mailman,To => $recipient,Cc => $cc_recipient,Subject => $subject,Data => "Data",Type => "multipart/mixed"); 
$email->attach(Type => 'TEXT', Data => "$email_message");
$email->send();

当我执行脚本时,我收到以下错误消息:

Cannot find a SASL Connection library at /usr/lib/perl5/5.8.8/Net/SMTP.pm line 143

我尝试搜索错误消息,但找不到任何有价值的解释和/或解决与 MIME::Lite 使用相关的问题

有谁知道出了什么问题或产生了该错误消息的原因?


更新 使用 mail() 函数通过 php 发送电子邮件在 Web 浏览器中可以正常工作,但不能在命令行中工作

【问题讨论】:

您安装了哪个版本的 Net::SMTP? 我没有使用Net::SMTP,我使用的是MIME::Lite 是的,但您的错误显然来自 Net::SMTP。 好的,这是一个开始......我猜.pm 文件之一正在调用Net::SMTP,但没有使用Net::SMTP 的自定义代码 你安装了 Authen::SASL::Perl 吗?你有哪个版本的 Authen::SASL? 【参考方案1】:

您需要重新安装 Authen::SASL - 它安装不正确。从命令行以 root 身份执行此操作:

cpan GBARR/Authen-SASL-2.15.tar.gz

【讨论】:

以上是关于Perl - 使用带有身份验证的 MIME::Lite 发送电子邮件时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

在使用摘要身份验证的服务器上获取用户名 (Perl)

如何在 Perl 中使用 POE::Component::IRC::State 检查用户是不是通过 NickServ 的身份验证?

带有验证器的 Perl 工作流模块

如何使用 videoview 播放带有身份验证的 rtsp 流?

带有电话号码验证要求的 RESTful 身份验证

带有 facebook 身份验证的 Amazon cognito 身份管理