Perl로 이메일 보내기
프로그램이 Linux/Unix 시스템에서 실행 중인 경우 Perl의 sendmail 도구를 사용하여 이메일을 보낼 수 있습니다.
다음은 이메일 보내기를 위한 간단한 스크립트 예입니다.
#!/usr/bin/perl # 接收邮箱,这里我设置为我的 QQ 邮箱,你需要修改它为你自己的邮箱 $to = '429240967@qq.com'; #发送者邮箱 $from = 'test@php.cn'; #标题 $subject = 'php中文网 Perl 发送邮件测试'; $message = '这是一封使用 Perl 发送的邮件。'; open(MAIL, "|/usr/sbin/sendmail -t"); # 邮件头部 print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; # 邮箱信息 print MAIL $message; close(MAIL); print "邮件发送成功\n";
위 프로그램을 실행하면 출력 결과는 다음과 같습니다.
邮件发送成功
일반적인 상황에서 위의 이메일이 QQ 사서함에 차단되면 화이트리스트에 추가할 수 있습니다. 작업 방법은 https://kf.qq.com/faq/120322fu63YV130805rYRFzu.html
다음을 클릭하세요. 화이트리스트에 추가하면 일반 수신메일이 됩니다.
HTML 형식 이메일 보내기
이메일 헤더에 Content-type: text/htmln을 추가하여 HTML 형식 이메일을 보낼 수 있습니다. , 예는 다음과 같습니다.
#!/usr/bin/perl # 接收邮箱,这里我设置为我的 QQ 邮箱,你需要修改它为你自己的邮箱 $to = '429240967@qq.com'; #发送者邮箱 $from = 'test@php.cn'; #标题 $subject = 'php中文网 Perl 发送邮件测试'; $message = '<h1>这是一封使用 Perl 发送的邮件<h1><p>你好,我来自php中文网,地址是:http://www.php.cn。</p>'; open(MAIL, "|/usr/sbin/sendmail -t"); # 邮件头部 print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-type: text/html\n"; # 邮箱信息 print MAIL $message; close(MAIL); print "邮件发送成功\n";
성공적으로 실행된 후 다음과 같이 이메일 내용을 확인합니다.
MIME::Lite 모듈 사용
윈도우 시스템을 사용하는 경우 sendmail 도구가 없습니다. 이제 Perl의 MIME:Lite 모듈을 이메일 클라이언트로 사용하여 이메일을 보낼 수 있습니다.
MIME:Lite 모듈 다운로드 주소는 MIME-Lite-3.030.tar.gz입니다.
여기에서는 cpan을 사용하여 다운로드하지 않고 직접 설치합니다(루트 권한 필요).
$ cpan -i MIME::Lite …… /usr/bin/make install -- OK
설치가 성공한 후 예를 보여드리겠습니다.
#!/usr/bin/perl use MIME::Lite; # 接收邮箱,这里我设置为我的 QQ 邮箱,你需要修改它为你自己的邮箱 $to = '429240967@qq.com'; # 抄送者,多个使用逗号隔开 # $cc = 'test1@php.cn, test2@php.cn'; #发送者邮箱 $from = 'test@php.cn'; #标题 $subject = 'php中文网 Perl 发送邮件测试'; $message = '这是一封使用 Perl 发送的邮件,使用了 MIME::Lite 模块。'; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Data => $message ); $msg->send; print "邮件发送成功\n";
성공적으로 실행한 후 다음을 봅니다. 이메일 내용은 다음과 같습니다:
HTML 형식 이메일 보내기
이메일 헤더에 Content-type: text/htmln을 추가할 수 있습니다 HTML 형식으로 이메일을 보내는 경우 예는 다음과 같습니다.
#!/usr/bin/perl use MIME::Lite; # 接收邮箱,这里我设置为我的 QQ 邮箱,你需要修改它为你自己的邮箱 $to = '429240967@qq.com'; # 抄送者,多个使用逗号隔开 # $cc = 'test1@php.cn, test2@php.cn'; #发送者邮箱 $from = 'test@php.cn'; #标题 $subject = 'php中文网 Perl 发送邮件测试'; $message = '<h1>这是一封使用 Perl 发送的邮件<h1><p>使用了 MIME::Lite 模块。</p><p>来自php中文网,地址是:http://www.php.cn。</p>'; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Data => $message ); # 添加头部信息 $msg->attr("content-type" => "text/html"); $msg->send; print "邮件发送成功\n";
성공적으로 실행한 후 아래와 같이 이메일 내용을 확인합니다.
첨부파일과 함께 이메일 보내기
첨부파일과 함께 이메일을 보내는 예는 다음과 같습니다.
#!/usr/bin/perl use MIME::Lite; # 接收邮箱,这里我设置为我的 QQ 邮箱,你需要修改它为你自己的邮箱 $to = '429240967@qq.com'; # 抄送者,多个使用逗号隔开 # $cc = 'test1@php.cn, test2@php.cn'; #发送者邮箱 $from = 'test@php.cn'; #标题 $subject = 'php中文网 Perl 发送邮件测试'; $message = '这是一封使用 Perl 发送的邮件,使用了 MIME::Lite 模块,包含了附件。'; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Type => 'multipart/mixed' # 附件标记 ); $msg->attach ( Type => 'TEXT', Data => $message );# 指定附件信息 $msg->attach(Type => 'TEXT', Path => './php.txt', # 当前目录下 Filename => 'php.txt', Disposition => 'attachment' ); $msg->send; print "邮件发送成功\n";
성공적으로 실행한 후 이메일 내용을 다음과 같이 봅니다.
여러 개의 $msg->attach를 사용하여 여러 개의 첨부 파일을 추가할 수 있습니다.