Gửi thư (SMTP so với thư PHP). Gửi thư từ PHP bằng SMTP (có tệp đính kèm) Cách gửi thư bằng smtp

  • 21.11.2020

Vì việc gửi thư ẩn danh từ máy chủ lưu trữ ảo Windows bị cấm, việc gửi thư phải được thực hiện thông qua máy chủ SMTP, máy chủ này cũng có thể sử dụng hệ thống thư của chúng tôi.

Làm thế nào để gửi email bằng PHP?

Sử dụng bất kỳ lớp PHP nào hỗ trợ ủy quyền trên máy chủ smtp. Ví dụ, một tập hợp các lớp PHPMailer có thể được sử dụng.

Bạn cũng có thể sử dụng ví dụ của chúng tôi, ví dụ này thực hiện gửi thư bằng máy chủ smtp, yêu cầu ủy quyền. Do đó, đừng quên thêm các chi tiết truy cập thích hợp vào tập lệnh, ví dụ:

// Nếu bạn muốn hiển thị nhật ký của phiên SMTP, bạn có thể bỏ ghi chú dòng tiếp theo. // $ _SERVER ["debug"] \u003d true;function MailSmtp ($ Recogever, $ subject, $ content, $ headers, $ debug \u003d 0) ($ smtp_server \u003d "smtp.site"; // Địa chỉ máy chủ SMTP$ smtp_port \u003d 25; // Cổng máy chủ SMTP$ smtp_user \u003d "[email protected]"; // Tên người dùng để ủy quyền trên máy chủ SMTP$ smtp_password \u003d "pAsSwORd"; // Mật khẩu để ủy quyền trên máy chủ SMTP$ mail_from \u003d "[email protected]"; // Hộp thư mà từ đó bức thư được gửi đi$ sock \u003d fsockopen ($ smtp_server, $ smtp_port, $ errno, $ errstr, 30); $ str \u003d fgets ($ sock, 512); if (! $ sock) (printf ("Socket chưa được tạo \\ n"); exit (1);) smtp_msg ($ sock, "HELO". $ _SERVER ["SERVER_NAME"]); smtp_msg ($ sock, "AUTH ĐĂNG NHẬP"); smtp_msg ($ sock, base64_encode ($ smtp_user)); smtp_msg ($ sock, base64_encode ($ smtp_password)); smtp_msg ($ sock, "MAIL TỪ:<" . $mail_from . ">"); smtp_msg ($ sock," RCPT ĐẾN:<" . $reciever . ">"); smtp_msg ($ sock," DATA "); $ headers \u003d" Chủ đề: ". $ chủ đề." \\ r \\ n ". $ headers; $ data \u003d $ headers." \\ r \\ n \\ r \\ n " . $ content. "\\ r \\ n."; smtp_msg ($ sock, $ data); smtp_msg ($ sock, "QUIT"); fclose ($ sock);) function smtp_msg ($ sock, $ msg) (if ( ! $ sock) (printf ("Ổ cắm bị hỏng! \\ n"); exit (1);) if (Isset ($ _ SERVER ["debug"]) && $ _SERVER ["debug"]) (printf ("Gửi từ chúng tôi :% s
", nl2br (htmlspecialchars ($ msg)));) fputs ($ sock," $ msg \\ r \\ n "); $ str \u003d fgets ($ sock, 512); if (! $ sock) (printf (" Socket không hoạt động \\ n "); exit (1);) else (if (Isset ($ _ SERVER [" debug "]) && $ _SERVER [" debug "]) (printf (" Got from server:% s
", nl2br (htmlspecialchars ($ str))));) $ e \u003d boom (" ", $ str); $ code \u003d array_shift ($ e); $ str \u003d implode (" ", $ e); if ($ code \u003e 499) (printf ( "Sự cố với cuộc trò chuyện SMTP.

Mã% d.
Nhắn tin% s
"
, $ mã, $ str); thoát ra (1); )))?\u003e

Tải xuống ví dụ về tập lệnh tạo sẵn với hàm MailSmtp (): smtpauth.php.sample

Bạn có thể sử dụng hàm MailSmtp () được mô tả ở trên để thay thế trực tiếp hàm mail (), hãy xem xét một ví dụ về biểu mẫu đơn giản nhất trong PHP:

// Tiêu đề thư, chúng xác định mã hóa thư, các trường Từ, Đến, v.v.$ headers \u003d "MIME-Phiên bản: 1.0 \\ r \\ n"; $ headers. \u003d "Loại nội dung: text / html; charset \u003d windows-1251 \\ r \\ n"; $ headers. \u003d "Tới: $ to \\ r \\ n"; $ headers. \u003d "Từ: Tên người gửi " ; // mail ($ to, $ subject, $ message, $ headers);request_once "smtpauth.php"; MailSmtp ($ to, $ topic, $ message, $ headers); )?\u003e
Cho ai:  Chủ đề:  Bản văn: 
 
 

Để biểu mẫu này hoạt động mà không cần hàm mail (), chúng tôi đã bao gồm tệp smtpauth.php thông qua request_once và gọi hàm MailSmtp () được mô tả trong nó với các đối số tương tự cho mail (). Đồng thời, chúng tôi nhận xét lệnh gọi đến mail () trong mã để tránh lỗi khi thực thi tập lệnh.

Làm thế nào để gửi email bằng ASP.NET?

Nếu bạn đang sử dụng phiên bản 2.0 thì hãy sử dụng lớp MailMessage System.Net.Mail), cũng được mô tả.

Dưới đây là các ví dụ về việc sử dụng nó cho ngôn ngữ "C #" và "VisualBasic":

Ví dụ cho ngôn ngữ "C #":

<% @Page Language="c#" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% MailMessage message = new MailMessage(); // tạo một email mới message.To.Add ("[email protected]"); // thêm địa chỉ người nhận message.From \u003d new MailAddress ("từ @ domain.tld", "Tên người gửi"); // chỉ định tên và địa chỉ của người gửi message.Subject \u003d "Chủ đề tin nhắn"; // chỉ định dòng chủ đề message.BodyEncoding \u003d System.Text.Encoding.UTF8; // chỉ định mã hóa của chữ cái message.IsBodyHtml \u003d false; // chỉ định định dạng thông báo (true - HTML, false - không phải HTML) message.Body \u003d "Nội dung tin nhắn"; // xác định văn bản (nội dung) của bức thư SmtpClient client \u003d new SmtpClient ("smtp.site", 25); // tạo kết nối mới tới máy chủ "smtp.site" client.DeliveryMethod \u003d SmtpDeliveryMethod.Network; // xác định phương thức gửi tin nhắn client.EnableSsl \u003d false; // vô hiệu hóa nhu cầu sử dụng kết nối an toàn với máy chủ client.UseDefaultCredentials \u003d false; // vô hiệu hóa việc sử dụng chi tiết ủy quyền "mặc định" client.Credentials \u003d new NetworkCredential ("postmaster @ domain.tld"," *** mật khẩu *** "); // chỉ định các chi tiết bắt buộc (tên người dùng và mật khẩu) để ủy quyền trên máy chủ SMTP client.Send (tin nhắn); // gửi tin nhắn %>

Tải xuống ví dụ về biểu mẫu tạo sẵn minh họa việc sử dụng phương pháp này: MailForm.aspx.

Ví dụ cho ngôn ngữ "VisualBasic":

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Net.Mail" %> <% @Import Namespace="System.Net" %> <% Dim smtpMssg AS new MailMessage smtpMssg.From = New MailAddress ("admin@domain.tld"," Sender_name ") smtpMssg.To.Add (" [email protected] ") "thêm địa chỉ người nhận smtpMssg.Subject \u003d "Chủ đề Email" "chỉ định một dòng chủ đề smtpMssg.Body \u003d "Văn bản email" "xác định nội dung (nội dung) của bức thư smtpMssg.BodyEncoding \u003d System.Text.Encoding.UTF8 "dấu hiệu của mã hóa chữ cái smtpMssg.IsBodyHtml \u003d false "chỉ định định dạng thông báo (true - HTML, false - không phải HTML) Dim SmtpMail As New SmtpClient ("smtp.site", 25) "khai báo một đối tượng mới thuộc loại" SmtpClient " SmtpMail.DeliveryMethod \u003d SmtpDeliveryMethod.Network "chỉ dẫn của phương thức gửi thư SmtpMail.UseDefaultCredentials \u003d Sai "vô hiệu hóa việc sử dụng chi tiết ủy quyền" mặc định " SmtpMail.EnableSsl \u003d Sai "vô hiệu hóa nhu cầu sử dụng kết nối an toàn với máy chủ SmtpMail.Credentials \u003d new NetworkCredential ("postmaster @ domain.tld"," *** mật khẩu *** ") "chỉ định các chi tiết bắt buộc (tên người dùng và mật khẩu) để ủy quyền trên máy chủ SMTP SmtpMail.Send (smtpMssg) "gửi tin nhắn %>

Ngoài ra còn có lớp SmtpMail không được dùng nữa (và không được dùng nữa) (sử dụng không gian tên System.Web.Mail). Dưới đây là một ví dụ về việc sử dụng nó cho ngôn ngữ "VisualBasic":

<% @Page Language="VB" Debug="true" %> <% @Import Namespace="System.Web" %> <% @Import Namespace="System.Web.Mail" %> <% Dim smtpMssg = new MailMessage "khai báo một đối tượng mới kiểu" MailMessage " smtpMssg.From \u003d "Sender_name domain.tld>" "chỉ định tên và địa chỉ của người gửi smtpMssg.To \u003d "admin @ domain.tld" "chỉ ra địa chỉ của người nhận smtpMssg.BodyFormat \u003d MailFormat.Text "xác định định dạng của bức thư smtpMssg.BodyEncoding \u003d Mã hóa.UTF8 "dấu hiệu của mã hóa chữ cái smtpMssg.Subject \u003d "Chủ đề Email" "chỉ định một dòng chủ đề smtpMssg.Body \u003d "Nội dung email" "xác định nội dung của bức thư smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1) "xác định nhu cầu ủy quyền SMTP trên máy chủ smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin @ domain.tld") "tên người dùng để ủy quyền smtpMssg.Fields.Add ("http://schemas.microsoft.com/cdo/configuration/sendpassword", "*** password ***") "mật khẩu để ủy quyền SmtpMail.SmtpServer \u003d "smtp.site" "chỉ định địa chỉ của máy chủ SMTP SmtpMail.Send (smtpMssg) "gửi tin nhắn %>

Làm thế nào để gửi email bằng ASP?

Xin lưu ý rằng khi sử dụng máy chủ smtp của chúng tôi, cần có ủy quyền, vì vậy đừng quên thêm chi tiết truy cập thích hợp vào tập lệnh, ví dụ:

<% iConfig = Server.CreateObject("CDO.Configuration") Set iConfig = Server.CreateObject("CDO.Configuration") With iConfig.Fields .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.сайт" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru" .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "postmaster@domain.tld".Item (" http://schemas.microsoft.com/cdo/configuration/sendpassword ") \u003d" password ". Cập nhật End With Set cdoMessage \u003d CreateObject (" CDO.Message ") With cdoMessage Set .Configuration \u003d iConfig .From \u003d "Người dùng thử nghiệm domain.tld\u003e ".To \u003d" Người dùng ".Subject \u003d" Xin chào người dùng ".TextBody \u003d" Tôi viết thư này từ tập lệnh ASP. ".Gửi End With Set cdoMessage \u003d Nothing Set iConfig \u003d Nothing%\u003e

Một số CMS đã có sẵn các phương tiện để gửi thư từ hoặc các mô-đun tương ứng, hãy xem xét phương tiện phổ biến nhất trong số đó.

Wordpress

Đối với CMS này, có một mô-đun đặc biệt "WP Mail SMTP", một ví dụ về cấu hình của nó được mô tả trên trang mô-đun.

Hãy chú ý đến hình minh họa trong ví dụ, hệ thống thư của chúng tôi yêu cầu sử dụng cổng 25 và không cần mã hóa SSL.

Joomla

Trong bảng quản trị, bạn vào phần "Cài đặt chung", chọn tab "Máy chủ". Trong trường "Thư", bạn cần chọn phương thức gửi là "Máy chủ SMTP", trong trường "Địa chỉ máy chủ SMTP" và "Đăng nhập SMTP" và "Mật khẩu SMTP", hãy chỉ định các chi tiết thích hợp của hệ thống thư, ví dụ: trang web smtp, hộp thư @ your_domain và tương ứng mật khẩu.

Drupal

CMS này cũng có mô-đun riêng để làm việc với máy chủ SMTP dựa trên PHPMailer. Bạn có thể tải xuống mô-đun này trên trang của nó trên trang web CMS Drupal, mô tả về việc cài đặt mô-đun có sẵn trong kho lưu trữ cùng với nó.

NetCat

CMS này không có chức năng tích hợp để làm việc với máy chủ SMTP. Để gửi thư với các tập lệnh trang web, chúng tôi có thể đề xuất sử dụng giải pháp của chúng tôi; để kết nối nó, bạn cần thực hiện như sau:

  • Tải xuống kho lưu trữ với các tệp cần thiết từ trang web của chúng tôi ( send_auth_mail.phpmail.inc.php) và giải nén nó trên máy tính của bạn;
  • Chỉnh sửa tập tin send_auth_mail.php từ kho lưu trữ, chỉ định trong đó chi tiết kết nối với máy chủ SMTP mong muốn:

    • $ mail_smtpServer \u003d "smtp.site"; (Địa chỉ máy chủ SMTP)
    • $ mail_port \u003d "25" ; (cổng kết nối)
    • $ mail_username \u003d "[email protected]"; (tên người dùng để ủy quyền trên máy chủ SMTP)
    • $ mail_password \u003d "Mật khẩu"; (mật khẩu để ủy quyền trên máy chủ SMTP)
  • Tập tin sao lưu domain.tld / www / netcat / admin / mail.inc.php;
  • Tải tập tin send_auth_mail.phpmail.inc.php đến trang web ảo trong thư mục domain.tld / www / netcat / admin /

domain.tld nên được thay thế bằng tên miền của bạn.

Giải pháp được đề xuất hoạt động với tất cả các mô-đun NetCat sử dụng các chức năng tiêu chuẩn của CMS này để gửi thư.

Trong PHP, việc sử dụng các script tự động hóa quá trình gửi thư là khá phổ biến. Trong bài viết này, chúng ta sẽ xem xét một tập lệnh đơn giản để gửi thư đến thư của người nhận bằng SMTP ( Giao thức chuyển thư đơn giản ). Sẽ quá dễ dàng nếu chỉ giới hạn ở chức năng này, tập lệnh cũng hỗ trợ tệp đính kèm, nghĩa là bạn có thể đính kèm tệp pdf, txt hoặc doc trong thư của mình.

Việc thiết lập script khá đơn giản, bạn chỉ cần dữ liệu của người gửi, đăng nhập, mật khẩu từ email là các bức thư sẽ được gửi đi.

Tập lệnh hoạt động với lớp km_smtp_class.php, lớp này tốt vì nó hỗ trợ các giao thức SSL và TLS khác nhau cung cấp truyền dữ liệu an toàn.

Đây là kịch bản của chính nó:

"smtp.mail.ru", "SMTP_port" \u003d\u003e "25", "SMTP_email" \u003d\u003e "[email protected]", "SMTP_pass" \u003d\u003e "1111111", "SMTP_type" \u003d\u003e "null"); // Email của người nhận $ Receiver \u003d "[email protected]"; // Chủ đề của thư $ Subject \u003d "Đang gửi email từ PHP"; // Nội dung tin nhắn (trong HTML) $ Text \u003d "Xin chào!
Tin nhắn được gửi từ tập lệnh Mowshon Trang web: http: // site "; // Phần đính kèm trong thư - địa chỉ của tệp $ Attachment \u003d" "; / * $ mail \u003d new KM_Mailer (máy chủ, cổng, người dùng, mật khẩu, loại); * / / * Loại có thể là : , tls hoặc ssl * / $ mail \u003d new KM_Mailer ($ SenderConfig ["SMTP_server"], $ SenderConfig ["SMTP_port"], $ SenderConfig ["SMTP_email"], $ SenderConfig ["SMTP_pass"], $ SenderConfig [" SMTP_type "]); if ($ mail-\u003e isLogin) (// Đính kèm tệp if ($ Attachment) ($ mail-\u003e addAttachment ($ Attachment);) // Thêm người nhận khác $ mail-\u003e addRecipient (" user @ mail .ru "); $ mail-\u003e addRecipient (" [email protected] "); / * $ mail-\u003e send (From, For, Subject, Text, Title \u003d option) * / $ SendMail \u003d $ mail-\u003e send ($ SenderConfig ["SMTP_email"], $ Receiver, $ Subject, $ Text); // Xóa danh sách người nhận $ mail-\u003e clearRecipient (); $ mail-\u003e clearCC (); $ mail-\u003e clearBCC (); $ mail -\u003e clearAttachments ();) else (echo "Đã xảy ra lỗi khi kết nối với máy chủ SMTP";)?\u003e

Việc thiết lập script chủ yếu trên mảng $ SenderConfig, ở đây chúng ta phải chỉ định SMTP: máy chủ, cổng, đăng nhập và mật khẩu từ e-mail. Hãy mô tả từng khóa của mảng:

SMTP_server - Địa chỉ máy chủ SMTP (địa chỉ riêng cho các thư khác nhau)

Mail.ru thư: cổng smtp.mail.ru: 25, 587 và 465 (với mã hóa SSL)

Thư Yandex: cổng smtp.yandex.ru: 25, 587 465 (cổng SSL)

Thư Rambler: cổng mail.rambler.ru: 25, 587 465 (cổng SSL)

Yahoo Mail: smtp.mail.yahoo.com Cổng SSL: 465

(Nếu bạn cần địa chỉ của các máy chủ smtp không có trong danh sách - hãy viết trong phần bình luận)

SMTP_port - Chúng tôi đã mô tả nó ở trên cho mỗi máy chủ smtp.

SMTP_email - sẽ chính xác hơn nếu là người dùng, nhưng để rõ ràng hơn, tôi đã viết một email, chúng tôi cho biết địa chỉ email.

SMTP_pass - Mật khẩu từ email đã được chỉ định làm giá trị trong khóa SMTP_email


SMTP_type - NULL theo mặc định. Giao thức mà các bức thư sẽ được gửi đi. Giao thức: SSL và TLS

Có thể thêm tệp đính kèm vào thư bằng cách chỉ định địa chỉ đầy đủ cho tệp trong biến $ Attachment (/var/patch/to/file/File.pdf)

Nếu bạn có bất kỳ câu hỏi nào, hãy viết chúng trong phần bình luận bên dưới.

PHPMailer là một thư viện rất tiện dụng và phổ biến để gửi tin nhắn e-mail từ trang web của bạn. Bài viết này giải thích cài đặt thư viện cơ bản và cung cấp các ví dụ mã để gửi tin nhắn. PHPMailer có trong nó có lẽ mọi thứ bạn có thể mong muốn khi làm việc với thư: gửi theo nhiều cách khác nhau, thông qua các máy chủ khác nhau, bao gồm cả. thông qua smtp, khả năng mã hóa và ký các bức thư của bạn để chúng không bị gửi vào thư rác và hơn thế nữa.

Bạn có thể tải xuống thư viện PHPMailer từ https://github.com/PHPMailer/PHPMailer (nút "Sao chép hoặc tải xuống").

Để bắt đầu, tôi sẽ phân tích một vài ví dụ đơn giản để có thể hiểu rõ cách gửi email bằng PHPMailer.

Gửi email qua hàm mail () bằng PHPMailer

Nếu bạn muốn gửi thư từ lưu trữ của mình thông qua máy chủ thư, thì mọi thứ khá đơn giản và sẽ trông giống như sau:

// Bao gồm sử dụng thư viện PHPMailer PHPMailer \\ PHPMailer \\ PHPMailer; yêu cầu "PHPMailer / PHPMailer.php"; // Tạo thư $ mail \u003d new PHPMailer (); $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); // từ ai (email và tên) $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); // gửi cho ai (email và tên) $ mail-\u003e Subject \u003d "Test"; // chủ đề email // văn bản email html $ mail-\u003e msgHTML ("

Xin chào!

Đây là một bức thư thử nghiệm.



"); // Gửi if ($ mail-\u003e send ()) (echo" Đã gửi email! ";) Else (echo" Lỗi: ". $ Mail-\u003e ErrorInfo;)

Như bạn có thể thấy, mọi thứ khá đơn giản: chúng tôi kết nối thư viện, điền từ ai, gửi cho ai, chủ đề và nội dung của bức thư và gửi nó. Gửi thư theo cách này sẽ chỉ hoạt động từ các địa chỉ email trong miền của bạn (trừ khi chúng được liên kết với những người gửi thư khác).

Gửi email qua SMTP bằng PHPMailer bằng Yandex và Google làm ví dụ

Bạn cũng có thể gửi một lá thư qua một bưu phẩm khác, chẳng hạn như qua Yandex... Mã sẽ trông giống như sau:

// Bao gồm sử dụng thư viện PHPMailer PHPMailer \\ PHPMailer \\ PHPMailer; sử dụng PHPMailer \\ PHPMailer \\ SMTP; yêu cầu "PHPMailer / PHPMailer.php"; yêu cầu "PHPMailer / SMTP.php"; // Tạo thư $ mail \u003d new PHPMailer (); $ mail-\u003e isSMTP (); // Gửi qua SMTP $ mail-\u003e Host \u003d "smtp.yandex.ru"; // Địa chỉ máy chủ SMTP $ mail-\u003e SMTPAuth \u003d true; // Bật xác thực SMTP $ mail-\u003e Tên người dùng \u003d "đăng nhập"; // tên người dùng của bạn (không có tên miền và @) $ mail-\u003e Password \u003d "password"; // mật khẩu của bạn $ mail-\u003e SMTPSecure \u003d "ssl"; // mã hóa ssl $ mail-\u003e Port \u003d 465; // cổng kết nối $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); // từ ai $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); // cho ai $ mail-\u003e Subject \u003d "Test"; $ mail-\u003e msgHTML ("

Xin chào!

Đây là một bức thư thử nghiệm.



"); // Gửi if ($ mail-\u003e send ()) (echo" Đã gửi email! ";) Else (echo" Lỗi: ". $ Mail-\u003e ErrorInfo;)

Gửi email qua Google có một lưu ý: bạn cần có tài khoản google cho phép truy cập vào các ứng dụng không đáng tin cậy... Để thực hiện, bạn cần đăng nhập vào tài khoản https://myaccount.google.com, vào mục bảo mật, tìm đến phần "Ứng dụng không đáng tin cậy có quyền truy cập vào tài khoản của bạn" và chuyển sang "Được phép" ở đó. Tại thời điểm viết bài này, đây là https://myaccount.google.com/u/0/lesssecureapps.

$ mail-\u003e Host \u003d "smtp.gmail.com"; // Địa chỉ máy chủ SMTP $ mail-\u003e SMTPAuth \u003d true; // Bật xác thực SMTP $ mail-\u003e Tên người dùng \u003d "đăng nhập"; // tên người dùng của bạn $ mail-\u003e Password \u003d "password"; // mật khẩu của bạn $ mail-\u003e SMTPSecure \u003d "ssl"; // mã hóa ssl $ mail-\u003e Port \u003d 465; // cổng kết nối

Nếu đây là lần đầu tiên bạn chạy chương trình gửi qua smtp, thì bạn nên sử dụng thêm $ mail-\u003e SMTPDebug \u003d 1; để nhận tất cả các tin nhắn máy khách và máy chủ smtp, tức là toàn bộ quá trình kết nối, ủy quyền, v.v. sẽ được hiển thị trên màn hình, điều này rất hữu ích cho việc gỡ lỗi chương trình của bạn.

Gửi email có tệp đính kèm bằng PHPMailer

Mọi thứ ở đây khá đơn giản, bạn chỉ cần sử dụng phương thêm tập tin đính kèm... Tôi sẽ đưa ra một ví dụ, đồng thời trình bày thêm một số tính năng bổ sung:

// Bao gồm sử dụng thư viện PHPMailer PHPMailer \\ PHPMailer \\ PHPMailer; sử dụng PHPMailer \\ PHPMailer \\ Exception; yêu cầu "PHPMailer / PHPMailer.php"; yêu cầu "PHPMailer / Exception.php"; // Tạo email $ mail \u003d new PHPMailer; $ mail-\u003e CharSet \u003d "UTF-8"; $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); // từ ai $ mail-\u003e addReplyTo ("[email protected]", "Ivan Ivanov"); // trả về địa chỉ $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); // cho ai $ mail-\u003e Subject \u003d "Test"; // chủ đề $ mail-\u003e msgHTML (file_get_contents ("content.html"), __DIR__); // lấy "nội dung" của thư từ tệp $ mail-\u003e AltBody \u003d "Thư ở dạng văn bản thuần túy"; // văn bản thuần túy nếu máy khách không hỗ trợ html $ mail-\u003e addAttachment ("my_file.txt"); // đính kèm một tệp $ mail-\u003e addAttachment ("phpmailer.jpg"); // đính kèm tệp thứ hai // Gửi if ($ mail-\u003e send ()) (echo "Đã gửi email!";) else (echo "Lỗi:". $ mail-\u003e ErrorInfo;)

Có thể thêm nhiều địa chỉ người nhận bằng addAddress. Hoặc, nếu cần, ngược lại, bạn có thể xóa tất cả địa chỉ người nhận bằng phương pháp clearAddresses ()... Bạn có thể xóa tất cả các tệp đính kèm bằng clearAttachments ().

Bạn cũng có thể dùng AddEmbeddedImage để thêm tệp đính kèm (thường là hình ảnh) vào email được dự định sử dụng trong mã html và sẽ không có sẵn để tải xuống. Ví dụ về việc sử dụng hình ảnh trong một bức thư không có sẵn để tải xuống:

// Bao gồm sử dụng thư viện PHPMailer PHPMailer \\ PHPMailer \\ PHPMailer; yêu cầu "PHPMailer / PHPMailer.php"; // Tạo email $ mail \u003d new PHPMailer; $ mail-\u003e IsHTML (true); $ mail-\u003e setFrom ("[email protected]", "Ivan Ivanov"); $ mail-\u003e addAddress ("[email protected]", "Vasya Petrov"); $ mail-\u003e Subject \u003d "Kiểm tra"; $ mail-\u003e AddEmbeddedImage ("phpmailer.jpg", "testImage"); $ mail-\u003e Body \u003d "

Hình ảnh trong mã html

"; // Gửi $ mail-\u003e send ();

Vì vậy, bạn có thể gửi chữ cái có hình ảnhchỉ nằm trong phần nội dung của email, nhưng không thể tải xuống dưới dạng tệp đính kèm. Những hình ảnh này có thể được sử dụng ở bất cứ đâu trong mã html của thư, bạn chỉ cần chỉ định cid của hình ảnh thay vì url mà bạn đã sử dụng trong AddEmbeddedImage.

Gửi email đã ký và mã hóa qua PHPMailer

Theo mặc định, PHPMailer mã hóa tất cả các tin nhắn được gửi. Bạn chỉ có thể tắt mã hóa email khi gửi email qua SMTP bằng mã:

$ mail-\u003e SMTPSecure \u003d false; $ mail-\u003e SMTPAutoTLS \u003d false;

Đến ký vào lá thư với chữ ký DKIM, bạn cần làm một số điều sau:

  • Tạo khóa riêng tư và khóa công khai cho miền của bạn
  • Thêm bản ghi DNS cho miền TXT bằng khóa công khai
  • Định cấu hình chữ ký DKIM trong PHPMailer trước khi gửi email

Bây giờ tôi sẽ mô tả từng bước chi tiết hơn một chút.

Tạo khóa cá nhân và khóa công khai

Nếu bạn có máy chủ Linux và có quyền truy cập vào Shell, thì việc tạo các tệp khóa dễ dàng như bóc quả lê, bạn chỉ cần thực hiện 2 lệnh với các quyền thông thường của người dùng:

Openssl genrsa -out test-private.pem 1024 openssl rsa -in test-private.pem -out test-public.pem -pubout

Tương ứng, test-private.pemtest-public.pem là khóa riêng tư và khóa công khai. Bạn cần lưu chúng trong một thư mục mà khách truy cập trang web hoặc bất kỳ ai khác ngoài bạn sẽ không có sẵn.

Nếu không thể thực hiện các lệnh trong shell, thì để tạo khóa riêng tư và khóa công khai và lưu chúng vào tệp, bạn có thể sử dụng mã sau:

$ domain \u003d "test.ru"; // miền của bạn $ privatekeyfile \u003d "test-private.pem"; // tên của tệp nơi khóa cá nhân sẽ được ghi $ publickeyfile \u003d "test-public.pem"; // tên của tệp mà khóa công khai sẽ được ghi vào if (file_exists ($ privatekeyfile)) (echo "

Sử dụng các khóa hiện có

"; $ privatekey \u003d file_get_contents ($ privatekeyfile); $ publickey \u003d file_get_contents ($ publickeyfile);) else (echo"

Tạo khóa"; $ pk \u003d openssl_pkey_new ([" dig_alg "\u003d\u003e" sha256 "," private_key_bits "\u003d\u003e 2048," private_key_type "\u003d\u003e OPENSSL_KEYTYPE_RSA,]); openssl_pkey_export_to_file ($ pk, $ private_delkeypkey, openss ); $ publickey \u003d $ pubKey ["key"]; file_put_contents ($ publickeyfile, $ publickey); $ privatekey \u003d file_get_contents ($ privatekeyfile);) echo "

Khóa riêng tư (giữ bí mật này!):

". $ privatekey."
"; tiếng vang"

Khóa công khai:

". $ publickey."
";

Chú ý! Hãy nhớ đảm bảo rằng thư mục nơi các tệp sẽ được lưu có thể ghi được.

Thêm bản ghi DNS với khóa công khai

Bản ghi DNS là cần thiết để máy chủ thư nhận được thư của bạn có thể xác minh chữ ký trên thư bằng cách đọc bản ghi DNS của miền của bạn. Thông thường, bản ghi DNS có thể được thêm vào bảng điều khiển miền của bạn hoặc trong bảng điều khiển lưu trữ của bạn. Nếu bạn không chắc chắn về cách thêm mục nhập, hãy liên hệ với bộ phận hỗ trợ của nhà cung cấp dịch vụ lưu trữ của bạn.

Bạn cần thêm bản ghi DNS giống như sau:

Ghi tên: mail._domainkey.test.ru. (ở cuối dấu chấm ".")

TTL: 3600 (hoặc sẽ là mặc định)

Loại bản ghi: TXT

Giá trị: v \u003d DKIM1; h \u003d sha256; t \u003d s; p \u003d YOUR_PUBLIC_KEY

Nhân danh mục nhập test.ru cần được thay thế bằng tên miền của bạn. Bạn thay thế các từ "YOUR_PUBLIC_KEY" bằng văn bản mà bạn nhận được ở bước trước sau "Khóa công khai", không có "----- BẮT ĐẦU KHÓA CÔNG KHAI -----" và "----- KẾT THÚC KHÓA CÔNG KHAI --- - ”, chỉ có chìa khóa. Trong trường hợp này, tất cả các dòng của phím cần nối thành một chuỗi dàiđể không có dòng mới.

Định cấu hình chữ ký DKIM trong PHPMailer và gửi email

Bây giờ tất cả những gì còn lại là thực hiện một vài cài đặt PHPMailer trước khi gửi thư và nó sẽ được ký. Tôi nghĩ ví dụ đã cho sẽ làm cho mọi thứ rõ ràng:

// Bao gồm sử dụng thư viện PHPMailer \\ PHPMailer \\ PHPMailer; yêu cầu "PHPMailer / PHPMailer.php"; // Tạo email $ mail \u003d new PHPMailer; $ mail-\u003e CharSet \u003d "UTF-8"; $ mail-\u003e setFrom ("[email protected]"); $ mail-\u003e addAddress ("[email protected]"); $ mail-\u003e Subject \u003d "Đây là một bài kiểm tra"; $ mail-\u003e msgHTML ("

Đây là một bài kiểm tra

"); // Thiết lập chữ ký DKIM $ mail-\u003e DKIM_domain \u003d" test.ru "; $ mail-\u003e DKIM_private \u003d" test-private.pem "; $ mail-\u003e DKIM_selector \u003d" mail "; // Gửi $ mail- \u003e send ();

Tất nhiên test.ru bạn phải thay đổi tên miền của mình và test-private.pem đến đường dẫn đầy đủ và tên của tệp khóa cá nhân đã được tạo ở giai đoạn tạo khóa.

Bây giờ, các email của bạn được gửi qua PHPMailer sẽ được DKIM ký bằng khóa cá nhân của bạn.

Gửi thư qua SMTP từ một máy chủ cục bộ cho phép bạn kiểm tra việc gửi thư từ một trang web nằm trên một máy cục bộ, hay đơn giản hơn, một máy chủ cục bộ. Để làm điều này, bạn có thể sử dụng bất kỳ dịch vụ thư nào yandex, google hoặc mail.ru.

Trước hết, SMTP (Simple Mail Transfer Protocol) là một giao thức mạng được sử dụng rộng rãi để truyền e-mail qua mạng TCP / IP. Và tất cả các dịch vụ thư phổ biến đều có các giao thức như vậy.

Với sự ra đời của các máy chủ cục bộ, không cần phải chọn nhà cung cấp dịch vụ lưu trữ để kiểm tra hiệu suất của các tập lệnh hoặc hệ thống cms riêng lẻ, và thậm chí nhiều hơn thế để trả tiền cho nó. Kiểm tra mọi thứ trên máy tính sẽ dễ dàng hơn nhiều và sau đó bạn có thể cho mọi người thấy những gì bạn đã làm.

Nhiều máy chủ như vậy đã tích hợp sẵn phần mềm và các chức năng cần thiết để làm việc với mail, bạn chỉ cần cấu hình nó một cách chính xác.

Để kiểm tra hiệu suất của thư như vậy, yêu cầu tối thiểu:

  • Openserver có thể được sử dụng như một máy chủ cục bộ.
  • Và một tập lệnh đơn giản, mẫu có thể được lấy ngay bên dưới.
  • Bất kỳ máy chủ thư nào cũng có thể được sử dụng.

Gửi thư php qua thiết lập tập lệnh SMTP

Cần phải chỉnh sửa một mẫu tập lệnh đơn giản có thể được sao chép bên dưới hoặc tải xuống từ hàng trăm trang web tương tự.

Đầu tiên, bạn cần thay đổi một số giá trị trong mẫu tập lệnh.
đến - chúng tôi thay đổi địa chỉ bưu điện nơi thư sẽ được gửi.
môn học - chủ đề thư
thông điệp - chính thông điệp hoặc nội dung của bức thư.

Một ví dụ về tập lệnh của tôi:

Tất nhiên, bạn có thể mở rộng một chút chức năng và làm cho tập lệnh hiển thị thông báo về việc gửi thư. Mặc dù nó là máy chủ SMTP thực sự gửi thông báo, tập lệnh chỉ tạo thành thông báo.

Ví dụ, bạn có thể viết như thế này:

Tất cả các giá trị được thay thế phải nằm trong dấu ngoặc kép, nếu không tập lệnh sẽ tạo ra lỗi. Sau đó, bạn có thể lưu tập lệnh vào thư mục máy chủ cục bộ.

Ví dụ: domain / send / index.php và bắt đầu thiết lập gửi thư qua máy chủ mở SMTP.

Thư sẽ được gửi đến bất kỳ địa chỉ nào sẽ được chỉ định trong tập lệnh thay vì giá trị 'Đến' , nhưng SMTP sẽ được chỉ định trong cài đặt trình mở sẽ xử lý và gửi thư này.

  1. Chúng tôi khởi động máy chủ
  2. Mở mô-đun trình mở với cài đặt trong menu "thư"
  3. Chúng tôi điền vào tất cả các trường như trong hình, trong khi thay thế tên người dùng, e-mail của người gửi và mật khẩu từ một hộp thư thực trên Yandex.

Chúng tôi lưu cài đặt và sau khi máy chủ được khởi động lại, bạn có thể tham khảo chính tập lệnh. Từ thư mục "Trang web của tôi", mở thư mục "gửi" trong đó tập lệnh index.php đã lưu trước đó.

Ngay sau khi tập lệnh này được gọi, thông tin sẽ xuất hiện trong cửa sổ trình duyệt mới mà tập lệnh đã hoạt động.

Sau đó, bạn nên kiểm tra hộp thư của mình, địa chỉ đã được chỉ định trong script, xem thư đã đến chưa.

Nếu nó không có ở đó, điều đó có nghĩa là một cái gì đó không được định cấu hình chính xác hoặc bức thư đã lọt vào thư mục spam.

Tất cả các cài đặt khác trông giống nhau, nhưng chỉ trong trường hợp, thông tin bổ sung sẽ không bị ảnh hưởng.

Để cấu hình gửi mail qua SMTP mail ru, bạn chỉ cần thay thế các tham số Yandex bằng các tham số mail ru.

Và để không phải xây dựng lại máy chủ cục bộ mỗi lần, cách tốt nhất là cấu hình các cấu hình máy chủ mở khác nhau. Làm thế nào để làm điều này được hiển thị trong video hướng dẫn.

Trong trường hợp này, chỉ cần tải cấu hình là đủ và tất cả các cài đặt đã được chỉ định cho cấu hình này sẽ khả dụng sau khi khởi động lại máy chủ. Đó là một thứ rất tiện dụng và nó hoạt động rất đơn giản.

Đối với mỗi cấu hình (không quan trọng nó sẽ được gọi như thế nào), các cài đặt riêng phải được thực hiện, tất nhiên, trừ khi, nó được lên kế hoạch sử dụng các tập lệnh, hệ thống cms và các ứng dụng khác nhau trong các tham số của chúng.
Nếu không, bạn có thể lấy bằng cài đặt mặc định.

Đối với thư SMTP ru, mọi thứ đều giống hệt nhau ở đây.

Dữ liệu Yandex thay đổi thành dữ liệu thư ru

Gửi thư qua smtp google

Để thiết lập gửi thư qua SMTP của Google, bạn nên thử một chút.

Thứ nhất, việc tự tạo hồ sơ trong Google khó hơn so với các hệ thống khác của Yandex và mail ru
Thứ hai, hệ thống sẽ không chỉ để bức thư đi qua, ngay cả khi bạn chỉ định chi tiết đăng nhập của mình. Để bắt đầu, cô ấy sẽ gửi một lá thư trong đó có tất cả các thông tin cần thiết về các hướng dẫn thêm.

Nếu không thì đối với Google, nó được định cấu hình theo cách tương tự. Chỉ tất cả dữ liệu được thay đổi.

Để định cấu hình gửi thư qua SMTP khác, tất cả dữ liệu sẽ gần giống nhau.

Nếu mọi thứ suôn sẻ cho bạn và các bức thư đến được người nhận được chỉ định, thì mọi thứ đã được thực hiện chính xác. Sẽ rất tuyệt nếu bạn chia sẻ công việc của mình trong phần bình luận.

Để một trang web nhất định có cơ hội hoạt động hiệu quả và năng suất, việc tạo ra nó nên được tiếp cận một cách có trách nhiệm và cân bằng nhất có thể. Việc lựa chọn hệ thống sẽ được sử dụng để tạo một cửa hàng trực tuyến đáng được quan tâm đặc biệt. Thực tế là một nền tảng thương mại chuyên bán hàng hóa hoặc dịch vụ sẽ cho phép bạn triển khai tất cả các chức năng cần thiết và dễ sử dụng, cho cả quản trị viên tham gia vào việc duy trì và lấp đầy trang web và cho khách hàng của các cửa hàng trực tuyến. Nhiều người và công ty đang phải đối mặt với câu hỏi chọn CMS phù hợp cho mình, hãy phân tích: chọn Magento hay OkayCMS. Hãy so sánh các tính năng và khả năng của các công cụ này cho các trang web.

Khi làm việc trên trang web của riêng bạn, một người hoặc một công ty sẽ phải nỗ lực rất nhiều - chỉ trong trường hợp này, bạn mới có thể tin tưởng vào kết quả tích cực và nhận được một công cụ thực sự hiệu quả. Một trong những câu hỏi cơ bản phải được giải quyết ngay cả trước khi bắt đầu tạo một trang web sẽ là làm thế nào để xác định tùy chọn CMS phù hợp nhất. Tiếp theo, chúng ta sẽ so sánh hai CMS: Joomla hoặc OkayCMS, hãy chú ý đến các tính năng của từng CMS.

Có trang web của riêng bạn là một trong những yêu cầu cơ bản để kinh doanh hiệu quả và thành công. Các số liệu thống kê minh chứng rõ ràng ủng hộ sự gia tăng số lượng mua hàng hóa và đơn đặt hàng dịch vụ khác nhau qua Internet. Với suy nghĩ này, hầu hết các công ty thương mại đã nhận ra sự cần thiết phải có trang web của riêng họ. Tuy nhiên, thực tế đơn thuần về sự sẵn có của tài nguyên Internet vẫn chưa đủ để tính vào hiệu quả, lợi nhuận và lợi ích kinh doanh dự kiến \u200b\u200bcủa nó.

Khi chuẩn bị tạo trang web của riêng bạn hoặc mở một cửa hàng trực tuyến, bạn cần phải tính đến và phân tích rất nhiều vấn đề, cũng như giải quyết các vấn đề khác nhau. Chỉ trong trường hợp này, bạn mới có thể mong đợi rằng dự án của mình sẽ mang lại kết quả tích cực và sẽ có thể đáp ứng đầy đủ các mong đợi. Trong số các vấn đề khác nhau liên quan đến sự phát triển của một cửa hàng trực tuyến, vấn đề lựa chọn một CMS đáng được quan tâm đặc biệt. Để giúp bạn dễ dàng xác định động cơ tối ưu cho mình, trong

Khi lên kế hoạch tạo trang web của riêng họ cho một cửa hàng trực tuyến trong tương lai, khá nhiều người và thậm chí cả các công ty chuyên bán hàng phải đối mặt với một sự lựa chọn khó khăn và cực kỳ quan trọng: chọn CMS hiện có. Nếu bạn đang suy nghĩ về việc nên chọn: PrestaShop hoặc OkayCMS, chúng tôi khuyên bạn nên đọc bài viết này, trong đó chúng tôi sẽ so sánh hai hệ thống này để tạo các trang web trên Internet, đặc biệt là các cửa hàng trực tuyến.