Le meilleur didacticiel Ruby envoi de courrier - SMTP en 2024, dans ce didacticiel, vous pouvez apprendre Envoyer des mails HTML avec Ruby,Envoyez un mail avec pièces jointes,
SMTP (protocole de transfert de courrier simple) qui est protocole Simple Mail Transfer, qui est un ensemble de règles pour transmettre des messages de la source à la destination, qu'il doit contrôler la façon dont les lettres de transit.
Ruby fournit un Net :: SMTP pour envoyer du courrier, et propose deux méthodes et nouveau départ:
nouvelle méthode a deux paramètres:
méthodede démarrage a les paramètres suivants:
SMTP méthode objet instanciation appelle sendmail, les paramètres suivants:
Ce qui suit fournit un script Ruby simple pour envoyer du courrier:
require 'net/smtp' message = <<MESSAGE_END From: Private Person <me@fromdomain.com> To: A Test User <test@todomain.com> Subject: SMTP e-mail test This is a test e-mail message. MESSAGE_END Net::SMTP.start('localhost') do |smtp| smtp.send_message message, 'me@fromdomain.com', 'test@todomain.com' endDans l'exemple ci-dessus, vous avez mis en place un message e-mail de base, faites attention au format de titre correct. Un e-mail pour être From, To, et le sujet, entre le texte et les informations d'en-tête nécessite une ligne vide.
Utilisez Net :: SMTP pour se connecter au serveur SMTP sur la machine locale pour envoyer des messages à l'aide de processus send_message, les paramètres du procédé pour l'expéditeur du message avec l'e-mail du destinataire.
Si vous n'êtes pas en cours d'exécution sur le serveur SMTP de la machine, vous pouvez utiliser la communication Net :: SMTP avec le serveur SMTP distant. Si vous utilisez les services de messagerie Web (comme Hotmail ou Yahoo Mail), votre fournisseur d'email fournira des détails sur le serveur de messagerie d'envoi pour vous:
Net::SMTP.start('mail.your-domain.com')
Le code ci-dessus va se connecter hôte mail.your-domain.com, numéro de port 25 du serveur de messagerie, si vous avez besoin de remplir le nom d'utilisateur et mot de passe, le code est le suivant:
Net::SMTP.start('mail.your-domain.com', 25, 'localhost', 'username', 'password', :plain)
Les exemples ci-dessus utilisent un nom d'utilisateur et mot de passe pour se connecter à l'hôte spécifié mail.your-domain.com, numéro de port 25 du serveur de messagerie.
Net :: SMTP fournit également un soutien pour l'envoi de messages au format HTML.
Lorsque l'envoi d'e-mail, vous pouvez définir la version MIME, type de document, le jeu de caractères pour envoyer des messages au format HTML.
Les exemples suivants sont utilisés pour envoyer des messages au format HTML:
require 'net/smtp' message = <<MESSAGE_END From: Private Person <me@fromdomain.com> To: A Test User <test@todomain.com> MIME-Version: 1.0 Content-type: text/html Subject: SMTP e-mail test This is an e-mail message to be sent in HTML format <b>This is HTML message.</b> <h1>This is headline.</h1> MESSAGE_END Net::SMTP.start('localhost') do |smtp| smtp.send_message message, 'me@fromdomain.com', 'test@todomain.com' end
Si vous avez besoin d'envoyer un contenu mixte de l'e-mail, vous devez définir le type de contenu est multipart / mixed. Ainsi, vous pouvez ajouter une pièce jointe dans le contenu du message.
Accessoire avant le transfert nécessite le pack d'utilisation ( "m") convertit son contenu en format base64.
L'exemple suivant va envoyer des pièces jointes comme /tmp/test.txt e-mail:
require 'net/smtp' filename = "/tmp/test.txt" # 读取文件并编码为base64格式 filecontent = File.read(filename) encodedcontent = [filecontent].pack("m") # base64 marker = "AUNIQUEMARKER" body =<<EOF This is a test email to send an attachement. EOF # 定义主要的头部信息 part1 =<<EOF From: Private Person <me@fromdomain.net> To: A Test User <test@todmain.com> Subject: Sending Attachement MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=#{marker} --#{marker} EOF # 定义消息动作 part2 =<<EOF Content-Type: text/plain Content-Transfer-Encoding:8bit #{body} --#{marker} EOF # 定义附件部分 part3 =<<EOF Content-Type: multipart/mixed; name=\"#{filename}\" Content-Transfer-Encoding:base64 Content-Disposition: attachment; filename="#{filename}" #{encodedcontent} --#{marker}-- EOF mailtext = part1 + part2 + part3 # 发送邮件 begin Net::SMTP.start('localhost') do |smtp| smtp.sendmail(mailtext, 'me@fromdomain.net', ['test@todmain.com']) end rescue Exception => e print "Exception occured: " + e end
Remarque: Vous pouvez spécifier l'adresse d'une pluralité de transmission, mais nécessite l'utilisation de virgules.