Phpmailer smtpsecure = không

Xin chào nhóm hỗ trợ, gần đây chúng tôi đã nâng cấp lên OJS 3. 3. 0. 7. Nhà cung cấp dịch vụ lưu trữ của chúng tôi nói sử dụng máy chủ cục bộ thay vì SMTP để gửi email. Đây là những cài đặt.
Sử dụng SMTP để gửi thư thay vì mail[]
smtp = Bật

;
smtp_server = localhost
smtp_port = 26

Bật xác thực SMTP
Hỗ trợ smtp_auth. ssl, tls [xem PHPMailer SMTPSecure]
smtp_auth = none
smtp_username = ****** @jmedsci. com
smtp_password = ******

Smtp_authtype được hỗ trợ. RAM-MD5, LOGIN, PLAIN, XOAUTH2 [xem PHPMailer AuthType]
;
; smtp_authtype =

; The following are required for smtp_authtype = XOAUTH2 [e.g. GMail OAuth]
;
; smtp_oauth_provider = Google
; smtp_oauth_email =
; smtp_oauth_clientid =
; smtp_oauth_clientsecret =
; smtp_oauth_refreshtoken =

; Enable suppressing verification of SMTP certificate in PHPMailer
; Note: this is not recommended per PHPMailer documentation
;

Tuy nhiên, chỉ quản trị viên hệ thống mới có thể gửi email qua OJS, tất cả những người dùng khác bao gồm Tổng biên tập, biên tập viên và người phản biện đều không thể gửi email. OJS tạo ra lỗi sau.
Lỗi SMTP. dữ liệu không được chấp nhận. Lỗi máy chủ SMTP. Lệnh DATA không thành công Chi tiết. Chuyển tiếp không được phép
Mã SMTP. 530

Vui lòng giúp tôi khắc phục sự cố này

sử dụng PHPMailer\PHPMailer\PHPMailer;
sử dụng PHPMailer\PHPMailer\SMTP;
sử dụng PHPMailer\PHPMailer\Exception;

yêu cầu 'đường dẫn/src/Ngoại lệ. php';
yêu cầu 'đường dẫn/src/PHPMailer. php';
yêu cầu 'đường dẫn/src/SMTP. php';

$mail = PHPMailer mới[true];

thử {
//Cài đặt máy chủ
$mail->SMTPDebug = 'none'; . DEBUG_SERVER
$mail->isSMTP[];
$mail->Host = 'mail. miền. xyz';
$mail->SMTPAuth = true;
$mail->Username = 'sender@domain. xyz';
$mail->Password = 'MyPassWord';
$mail->SMTPSecure = 'none';
$mail->Port = '587';
$mail->SMTPAutoTLS = false;

//Người nhận
$mail->setFrom['sender@domain. xyz'];
$mail->addAddress['receiver@domain. xyz'];

//Nội dung
$mail->isHTML[true];
$mail->Subject = 'Đây là chủ đề';
$mail->Body = 'This is the HTML message body in bold!';
$mail->AltBody = 'Đây là nội dung ở dạng văn bản thuần túy dành cho ứng dụng thư khách không phải HTML';

$mail->send[];
echo 'Thư đã được gửi';
} catch [Ngoại lệ $e] {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
?>

Tải xuống thư viện PHPMailer từ đây, https. //github. com/Synchro/PHPMailer. Đó là thư viện miễn phí, dễ sử dụng hỗ trợ gửi e-mail bằng cách sử dụng kết nối an toàn trực tiếp từ SMTP. Nếu bạn chạy máy chủ ảo hoặc máy chủ chuyên dụng của riêng mình và bạn không thiết lập ứng dụng máy chủ thư, thì đây là thư viện PHP phù hợp với bạn

Thư viện này hoạt động hoàn hảo với văn bản thuần túy và HTML hoặc bạn có thể tạo thư HTML và chèn một văn bản thuần túy thay thế để hỗ trợ các ứng dụng thư khách cũ hơn không hỗ trợ HTML

Ví dụ: nếu bạn có trang web của mình trên http. //www. thí dụ. com/ và tài liệu gốc của bạn là /var/www/example. com, tải thư mục phpmailer lên tới /var/www/example. com/scripts/phpmailer.  

TIỀN BOA

Đừng quên thoát các biến $_POST và $_GET của bạn, luôn đặt các tập lệnh gửi email vào câu lệnh if hoặc ít nhất là sử dụng một số biện pháp bảo vệ để ngăn "tin tặc" sử dụng trang của bạn với trình gửi thư tập lệnh làm cổng thư rác email.  

require_once['scripts/phpmailer/class.phpmailer.php'];


$mail = new PHPMailer[];

$mail->IsSMTP[];                    _______8// telling the class to use SMTP
$mail = new PHPMailer[];0

$mail = new PHPMailer[];1$mail = new PHPMailer[];2
$mail = new PHPMailer[];0

$mail = new PHPMailer[];4              $mail = new PHPMailer[];9
$mail->IsSMTP[];0           $mail->IsSMTP[];4
$mail->IsSMTP[];5    $mail->IsSMTP[];7
$mail->IsSMTP[];8                        4

    5______36    7
______38    9

    0
    1    2
    3    4
    5
    6
    7


    8

    9    0____36    2

    3____34

    5    6

    7
    8
        0    1
    2

    8
            6    7
    8

    9

HTML so với. VĂN BẢN THÔ

Ví dụ trên này là để gửi e-mail văn bản thuần túy.  

Để gửi văn bản thuần túy, đây là một số mẹo

  1. Không sử dụng     0 thay vào đó hãy sử dụng $mail->Body = $body_of_your_email;
  2. Không sử dụng     1
  3. Đặt $mail->IsHTML[false];

Để gửi e-mail HTML, đây là một số mẹo

  1. Tất nhiên là đặt $mail->IsHTML[true];
  2. Ví dụ: đối với nội dung email, chỉ sử dụng MsgHTML.     2_______33    4 không sử dụng $mail->Body = $body_of_your_email;

MẸO KHÁC

Bạn có thể sử dụng các biến tùy chọn như

  • $mail->AddReplyTo["reply-to@example. com","Đầu Cuối"];
  • $mail->AddAttachment["đường dẫn/đến/a/tệp/tệp đính kèm. gif"];
  • $mail->IsSendmail[];
  • Nếu không đặt IsSendmail[] và IsSMTP, nó sẽ sử dụng thư PHP tiêu chuẩn[];
  • Nếu gửi thư hàng loạt, chẳng hạn như nhiều email từ cơ sở dữ liệu, hãy sử dụng $mail->SMTPKeepAlive = true; . php trong thư mục ví dụ của thư viện PHPmail
  • Để đặt ngôn ngữ, hãy sử dụng $mail->SetLanguage['de', 'phpmailer/language/'];

Tại sao nên sử dụng PHPMailer

Tôi quyết định sử dụng PHPMailer và không cài đặt máy chủ thư như Postfix, vì vấn đề bảo mật, chống SPAM và đây cũng là cách tiết kiệm thời gian, vì tôi sử dụng Google Apps, tôi đã thiết lập tài khoản Google Apps của mình để tự động ký e-mail bằng DKIM,

Chủ Đề