【问题标题】:SMTP Authentication problemSMTP认证问题
【发布时间】:2011-05-02 22:03:40
【问题描述】:

我正在用 Perl 编写一个简单的邮件客户端,它使用 SMTP 登录邮件服务器,然后从那里将邮件发送到另一个电子邮件地址(在不同的主机上)。我使用原始 SMTP 命令,因为草莓 perl 不附带 SASL.pm,这是进行身份验证所需的。但是,当脚本尝试对自身进行身份验证时,它会失败。我尝试了“AUTH LOGIN”和“AUTH PLAIN”机制,但没有运气。这是一个例子:

EHLO example.com
AUTH LOGIN
YWxwaGE=
cGFzc3dvcmQ=
MAIL FROM:<alpha@example.com>
RCPT TO:<beta@betadomain.com>
DATA
Subject: sample message
From: alpha@example.com
To: beta@betadomain.com

Greetings,
Typed message (content)
Goodbye.
. 
QUIT
EOT

"YWxwaGE=", "cGFzc3dvcmQ=" 是 Base64 编码的用户名和密码。无论我提交什么,服务器总是抱怨用户名或密码错误。我做错了什么?

【问题讨论】:

    标签: perl authentication smtp


    【解决方案1】:

    为什么不直接安装一个支持带有 SASL 的 SMTP 的模块? Strawberry Perl 的优点之一是您可以轻松地从 CPAN 安装模块。

    例如,Email::SimpleEmail::Sender

    use strict;
    use warnings;
    use Email::Sender::Simple qw(sendmail);
    use Email::Simple;
    use Email::Simple::Creator;
    use Email::Sender::Transport::SMTP;
    
    my $email = Email::Simple->create(
      header => [
        To      => 'beta@betadomain.com',
        From    => 'alpha@example.com',
        Subject => "sample message",
      ],
      body => "Greetings,\nTyped message (content)\nGoodbye.\n",
    );
    
    my $transport = Email::Sender::Transport::SMTP->new({
      host => 'smtp.example.com',
      sasl_username => 'foo',
      sasl_password => 'bar',
    });
    
    sendmail($email, { transport => $transport });
    

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 2015-06-05
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      相关资源
      最近更新 更多