- 论坛徽章:
- 0
|
我曾经遇到了同样的问题,然后查看foxmail发送邮件的数据包,并查看邮件的原始信息,解决了,你看看我的代码。
- #!/usr/bin/perl
- use warnings;
- use strict;
- use MIME::Base64;
- use Net::SMTP::SSL;
- my $smtp_server = 'smtp.test.com';
- my $smtp_port = '465';
- my $username = 'user';
- my $password = 'passwd';
- my $from_mail = 'yunshu@test.com';
- my @to_mails = ( 'icy@test.com' );
- my $subject = encode_base64( '(测试邮件)请您修改域密码', ' ' );
- open(FH, "mail.txt") or die "$!";
- local($/) = undef;
- my $mail_body = <FH>;
- close( FH );
- $/ = "\n";
- $mail_body = encode_base64( $mail_body, ' ' );
- my $smtp = Net::SMTP::SSL -> new( Host => $smtp_server,
- Port => $smtp_port,
- Hello => $smtp_server,
- Debug => 1 ) || die "Can't connect $smtp_server:$smtp_port: $!\n";
- $smtp -> auth( $username, $password ) || die "Can't authenticate: $!\n";
- foreach my $to_mail( @to_mails )
- {
- $smtp -> mail( $from_mail );
- $smtp -> to( $to_mail );
- $smtp -> data( );
-
- # send mail head
- $smtp -> datasend( "Content-Type: text/plain; charset=gb2312 \n" );
- $smtp -> datasend( "Content-Transfer-Encoding: base64\n" );
- $smtp -> datasend( "From: $from_mail\n" );
- $smtp -> datasend( "To: $to_mail\n" );
- $smtp -> datasend( "Subject: =?gb2312?B?$subject?=\n\n");
-
- # send mail body
- $smtp -> datasend( $mail_body );
- $smtp -> dataend();
- }
- $smtp -> quit();
复制代码 |
|