2009-02-18 38 views
11

Tôi không muốn sử dụng sendmail để gửi email nhưng muốn sử dụng SMTP. Tôi có thể sử dụng Perl để gửi email đến tài khoản GMAIL của mình bằng cách nào?Làm cách nào để gửi email đến tài khoản Gmail của tôi bằng SMTP và Perl?

+0

tôi không thực sự có được câu hỏi: Bạn có muốn nói chuyện trực tiếp với máy chủ SMTP của Google? Hay của riêng bạn? Có điều gì đặc biệt về gmail về câu hỏi này không? – innaM

Trả lời

13

cá nhân Tôi khuyên bạn nên sử dụng mô-đun của tôi Email::Send::SMTP::TLS hoạt động khá tốt thông qua TLS của Google Mail .

Cảm ơn.

use Email::Send; 

my $mailer = Email::Send->new({ 
    mailer => 'SMTP::TLS', 
    mailer_args => [ 
     Host => 'smtp.gmail.com', 
     Port => 587, 
     User => '[email protected]', 
     Password => 'password', 
     Hello => 'fayland.org', 
    ] 
}); 

use Email::Simple::Creator; # or other Email:: 
my $email = Email::Simple->create(
    header => [ 
     From => '[email protected]', 
     To  => '[email protected]', 
     Subject => 'Subject title', 
    ], 
    body => 'Content.', 
); 

eval { $mailer->send($email) }; 
die "Error sending email: [email protected]" if [email protected]; 
1

Có các mô-đun SMTP muliple trên CPAN, ví dụ: Net::ESMTP. Ngoài ra, sendmail rất có thể không sử dụng SMTP để giao tiếp với các máy chủ thư, vậy lý do thực sự của bạn cho việc không muốn sử dụng nó là gì?

0

Nếu bạn không quen thuộc với CPAN (Mạng lưu trữ Perl toàn diện), tôi khuyên bạn nên đánh dấu trang đó. Nó chứa các thư viện của bên thứ ba (chủ yếu là được thử nghiệm tốt).

Một ví dụ cho thấy làm thế nào để gửi email bằng perl: http://www.perlfect.com/articles/sendmail.shtml

+0

OP cho biết: "Tôi không muốn sử dụng sendmail" – jfs

6

Theo bình luận, nó không phải là rõ ràng nếu bạn muốn gửi email thông qua SMTP của Google, hoặc chỉ cần gửi email nói chung (có lẽ vào tài khoản gmail của bạn) . Bạn nên kiểm tra Email::Send và có thể Email::Send::Gmail.

Ngoài ra, nếu những gì bạn thực sự hỏi là làm cách nào để di chuyển email từ đâu đó không phải Gmail sang Gmail, tôi đã có may mắn với IMAP sử dụng Mail::Box và phụ trợ Mail::Box::IMAP4::SSL. Bạn có thể xem ví dụ về sử dụng here.

+0

Email :: Gửi gần đây đã bị từ chối vì lợi ích của Email :: Người gửi –

0

Tôi tình cờ sử dụng MIME::Lite, đây là trình bao bọc xung quanh Net::SMTP để đơn giản hóa quá trình xây dựng các đối tượng email, tệp đính kèm và gửi tải trọng.

Nếu bạn không quen thuộc với việc cài đặt mô-đun, kiểm tra:

Trên Windows, sử dụng ActiveState Perl Package Manager (trong menu start)

Trên Unix, sử dụng CPAN: $ sudo cpan Module::Name

On tài khoản Unix được lưu trữ: How can I install a CPAN module into a local directory?

2

Tôi đã luôn sử dụng và có may mắn rất tốt với Mail::Sender.

+0

Thư :: Người gửi là nội dung hay. – daotoad

1

Một khả năng khác mà bạn có thể muốn xem là sử dụng mô-đun Email::Send::Gmail từ CPAN. Điều này sẽ cho phép bạn gửi email từ tài khoản Gmail của bạn tới bất kỳ tài khoản nào (ví dụ: cho chính bạn)

0

Nếu bạn không thích sendmail, một tùy chọn khác là sử dụng Postfix, một MTA khác.

Dưới đây là các hướng dẫn tôi theo sau để có được nó thiết lập trên máy tính của tôi, sử dụng gmail: http://souptonuts.sourceforge.net/postfix_tutorial.html

này có thể có ích quá, nếu bạn nhận được một cảnh báo về thất bại trong việc xác minh một chứng chỉ từ Thawte Premium Server CA. http://ubuntuforums.org/archive/index.php/t-894355.html

0

Email::Send (như được sử dụng trong câu trả lời Fayland Lâm) bị phản đối:

Email :: Gửi đi xa ... tốt, không thực sự đi xa, nhưng nó được chính thức đánh dấu "ra khỏi ủng hộ."

này làm việc cho tôi, bằng cách sử dụng Email ưa thích :: Tên người gửi:

use strict; 
use warnings; 

use Email::Sender::Simple qw(sendmail); 
use Email::Sender::Transport::SMTPS(); 
use Email::Simple(); 
use Email::Simple::Creator(); 

my $smtpserver = 'server'; 
my $smtpport = 587; 
my $smtpuser = 'username'; 
my $smtppassword = 'password'; 

my $transport = Email::Sender::Transport::SMTPS->new({ 
    host => $smtpserver, 
    port => $smtpport, 
    ssl => "starttls", 
    sasl_username => $smtpuser, 
    sasl_password => $smtppassword, 
}); 

my $email = Email::Simple->create(
    header => [ 
    To  => '[email protected]', 
    From => '[email protected]', 
    Subject => 'Hi!', 
    ], 
    body => "This is my message\n", 
); 

sendmail($email, { transport => $transport }); 
Các vấn đề liên quan