gpt4 book ai didi

perl - 尝试使用 Net::SMTP::SSL 发送经过身份验证的电子邮件

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:42 30 4
gpt4 key购买 nike

我正在尝试使用 Net::SMTP::SSL 模块将经过身份验证的电子邮件发送到 comcast 电子邮件服务器。我正在使用以下代码。

#!/usr/bin/perl

use Net::SMTP::SSL;
use MIME::Base64;

$smtp = Net::SMTP::SSL->new
(
"smtp.comcast.net",
Hello => "host.comcast.net",
Port => 465,
Timeout => 30,
Debug => 1,
);
$smtp->datasend("AUTH LOGIN\n");
$smtp->response();

# Mailbox info
$smtp->datasend(encode_base64('username')); # username
$smtp->response();
$smtp->datasend(encode_base64('password')); # password
$smtp->response();

# Email from
$smtp->mail('user\@comcast.net');

# Email to
$smtp->to('user\@host.com');

$smtp->data();

$smtp->datasend("To: user\@host.com\n");
$smtp->datasend("From: user\@comcast.net\n");
$smtp->datasend("Subject: Test");

# Line break to separate headers from body
$smtp->datasend("\n");

$smtp->datasend("Blah\n");
$smtp->dataend();

$smtp->quit();
exit;

我基本上遵循 here 中的代码对于康卡斯特。

我已经运行了 telnet,可以连接到端口上的 smtp 服务器,我可以发出 AUTH LOGIN 并成功登录,但是发出

$smtp->datasend("AUTH LOGIN\n");

总是导致:

Can't call method "datasend" on an undefined value

我也试过执行 auth 方法登录,但也失败了。

我在这里错过了什么?我知道我忽略了一些简单的事情。

最佳答案

几乎所有 Net::SMTP方法可以选择设置错误代码,所以我怀疑 Net::SMTP::SSL做同样的。为您的构造函数尝试以下操作:

use Net::SMTP::SSL;
use MIME::Base64;

use strict;
use warnings;

my $smtp = Net::SMTP::SSL->new(
"smtp.comcast.net",
Hello => "host.comcast.net",
Port => 465,
Timeout => 30,
Debug => 1,
) or die "Failed to connect to mail server: $!";

此外,您的 smtp 服务器与您的 Hello 不同这一事实让我有点怀疑。

关于perl - 尝试使用 Net::SMTP::SSL 发送经过身份验证的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22573450/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com