perl电子邮件::使用gmail发送图像失败

perl电子邮件::使用gmail发送图像失败,perl,email,gmail,Perl,Email,Gmail,这个问题与之相关,但那里的答案不起作用(或不再起作用) 问题是,当我希望在包含img标记后立即发送html格式的消息时,我的perl程序(如下)失败了。图像本身是否由谷歌硬盘提供并不重要。我猜我遇到了一个新的gmail限制(我的脚本曾经工作过),但我不确定 (当然,这个问题并不是我的收件人看不到图像;而是发送perl脚本时出现了一个错误——不幸的是,没有更多的信息向我解释为什么它是一个错误。当然,我知道我的收件人需要同意查看图像以防止跟踪。) 下面是我的问题: 这是gmail还是perl模块的问

这个问题与之相关,但那里的答案不起作用(或不再起作用)

问题是,当我希望在包含img标记后立即发送html格式的消息时,我的perl程序(如下)失败了。图像本身是否由谷歌硬盘提供并不重要。我猜我遇到了一个新的gmail限制(我的脚本曾经工作过),但我不确定


(当然,这个问题并不是我的收件人看不到图像;而是发送perl脚本时出现了一个错误——不幸的是,没有更多的信息向我解释为什么它是一个错误。当然,我知道我的收件人需要同意查看图像以防止跟踪。)

下面是我的问题:

  • 这是gmail还是perl模块的问题

  • 是否可以发送图像,以便如果我的收件人想要查看 我的网站上的图片(最好不要像下面的例子那样仅仅是谷歌硬盘上的图片),他们可以同意看到吗

  • 有没有可能从谷歌那里得到一条更好的错误信息,说明它失败的原因

  • 以下是[几乎]有效的代码:

    #!/usr/bin/perl -w
    use strict;
    use warnings;
    
    use Email::MIME::CreateHTML;
    use Email::Send;
    use Email::Send::Gmail;
    
    my $toemail = 'ivo.welch@gmail.com';
    my $subject = 'testing image mailing';
    my $bodytext= '<html> <body> fails: <img src="https://drive.google.com/open?id=1K4psrWWolTSqx_f6MQP-T1-FMFpegT1Trg" alt="photo" />  </body> </html>\n';
    
    use readcredentials;
    my $gmailaccount= readcredentials( 'account' );
    my $gmailuserlogin= readcredentials( 'userlogin');
    my $gmailpasswd= readcredentials( 'gmailpassword');
    
    eval {
      my $message = Email::MIME->create_html(
                                             header => [
                                                        From   => $gmailaccount,
                                                        To      => $toemail,
                                                        Subject => $subject,
                                                       ],
                                             body => $bodytext,
                                            );
    
      my $sender = Email::Send->new(
                                    {   mailer      => 'Gmail',
                                        mailer_args => [
                                                        username => $gmailuserlogin,
                                                        password => $gmailpasswd,
                                                       ]
                                    }
                                   );
    
      $sender->send($message);
    };
    warn "Error sending email: $@" if $@;
    
    print STDERR "emailed!\n";
    
    #/usr/bin/perl-w
    严格使用;
    使用警告;
    使用Email::MIME::CreateHTML;
    使用电子邮件::发送;
    使用Email::Send::Gmail;
    我的$toemail='ivo。welch@gmail.com';
    我的$subject=‘测试图像邮寄’;
    my$bodytext='失败:\n';
    使用可读凭证;
    我的$gmailaccount=readcredentials('account');
    my$gmailuserlogin=readcredentials('userlogin');
    my$gmailpasswd=readcredentials('gmailpassword');
    评估{
    my$message=电子邮件::MIME->创建html(
    标题=>[
    From=>gmailaccount美元,
    To=>$toemail,
    主题=>$Subject,
    ],
    body=>$bodytext,
    );
    my$sender=电子邮件::发送->新建(
    {mailer=>“Gmail”,
    mailer_args=>[
    用户名=>$gmailuserlogin,
    密码=>$gmailpasswd,
    ]
    }
    );
    $sender->send($message);
    };
    如果$@,则警告“发送电子邮件时出错:$@”;
    打印“电子邮件发送的”标准!\n;
    
    我运行了您的脚本,并进行了一些修改,以删除对
    readcredentials
    的依赖,使其在我的环境中运行,并且电子邮件发送没有问题。问题可能是:

  • 你的gmail凭证可能会有一些问题
  • 脚本将下载并附加映像,因此您的本地环境可能阻止了映像的下载

  • 但是如果没有特定的错误消息,就很难进一步诊断。

    “这不是因为我的收件人看不到图像;而是因为发送perl脚本时出现错误而中止”确切的错误消息是什么?没有错误。奇怪的是---在更新了所有cpan模块之后,错误已经消失了。所以我要为此道歉。我不明白为什么,但我不能再复制它了——之前,我已经复制了几十次。没有错误。奇怪的是---在更新了所有cpan模块之后,错误已经消失了。所以我要为此道歉。我不明白为什么,但我不能再复制它了——在这之前,我已经复制了几十次。