אימייל הינו חלק בלתי נפרד ממרבית מבעלי אתרי אינטרנט, החל מפניות צור קשר ועד לאישורי הזמנות, אך לעיתים קרובות ספקיות המייל הגדולות מסמנות את מיילים אלו כספאם. במאמר הבא אסביר לכם מדוע דבר זה קורה ואיך ניתן להתגבר עליו ע״י שימוש ב-SMTP.
הבעיה
כאמור כמו שהסברתי בפסקת פתיחה, כאשר וורדפרס שולחת מייל היא משתמשת בפונקציית PHP אשר נקראת mail()
, פונקציה אשר שולחת את המייל ומשתמש בתיבת ברירת המחדל אשר מוגדרת בשרת. אחת מהפרמטרים שניתן להעביר לפונקציה זו היא header-ים בהם ניתן להגדיר דברים כמו מי השולח, למי להחזיר, האם המייל צריך לתמוך ב-HTML וכד׳.
כאשר WordPress משתמשת בפונקציה זו, היא שולחת Header שהתיבת מייל ששולחת היא wordpress@example.com
, כאשר example.com
מוחלף בכתובת האתר שלכם. לרוב, ספקיות המייל הגדולות על מנת להילחם בספאם, בודקות האם כתובת השולח זהה לכתובת המקור שממנה הגיעה ההודעה, וכאשר ההודעות מ-WordPress מגיעות עם כתובת שונה מכתובת המקור, זה מסמן דגל אדום אצלן ולכן הן מתייגות את הודעת המייל כספאם.
הפתרון
אז מה עושים בעצם? משתמשים במשהו מאוד פשוט שנקרא SMTP, פרוטוקול זה עובד כך שהוא מנתב את הודעות המייל דרך תיבה שאנחנו בוחרים בה, לרוב ע״י שימוש באימות של שם משתמש וסיסמא, דבר אשר פותר את הבעיה הנזכרת לעיל.
כאמור כתיבת קוד אשר משתמש בתוסף SMTP על מנת לאמת את השולח ולשלוח את האימייל הוא ארוך מאוד ומסובך, אך למזלנו יש סיפרייה מעולה ומאוד נפוצה בשם PHPMailer.
הפעלת SMTP ב-WordPress
לא הרבה יודעים, אך וורדפרס כוללת את הסיפרייה הנ״ל בקבצי המערכת שלה, אך אם זהו המצב, מדוע זה לא שמיש כברירת מחדל? – כאמור WordPress היא מערכת מאוד פשוטה למשתמש ומאוד חזקה למפתחים, ומעצם הידידותיות שלה, היא משתמש בשליחת מיילים לא דרך SMTP בברירת המחדל על מנת לא לסבך את המשתמשים.
על מנת להשתמש ב-PHPMailer ב-WordPress נעתיק את הקוד הבא ונדביק אותו בסוף קובץ ה-functions.php
, לצורך המחשה אסביר איך להתחבר לתיבת ה-Gmail שלכם.
/**
* Enable WordPress to send emails via SMTP.
*
* @since 1.0.0
*/
function dorzki_send_mail_using_smtp( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->IsHTML(true);
$phpmailer->Host = 'smtp.gmail.com';
$phpmailer->Port = 587;
$phpmailer->Username = 'email@gmail.com';
$phpmailer->Password = 'some password';
$phpmailer->SMTPAuth = true;
$phpmailer->SMTPSecure = 'tls';
$phpmailer->From = 'email@gmail.com';
$phpmailer->FromName = get_bloginfo( 'name' );
}
add_action( 'phpmailer_init', 'dorzki_send_mail_using_smtp' );
- שורה 3 // אנחנו מודיעים כי אנחנו מעוניינים להשתמש ב-SMTP.
- שורה 4 // אנחנו מגדירים את שרת ה-SMTP שבו נשתמש, בדוגמא הבאה אנחנו משתמשים בשרת של Gmail.
- שורה 5 // פרוטוקול SMTP משתמש בלרוב בפורט 25, אך Gmail משתמשים בפורט 587 עקב זאת שהם מצפינים את התקשורת בין השרת שלנו לבין השרת שלהם.
- שורה 6 // שם המשתמש (לרוב זוהי כתובת המייל).
- שורה 7 // סיסמאת ההתחברות.
- שורה 8 // אנחנו מודיעים כי אנחנו רוצים לבצע אימות והצפנה של התקשורת בין השרתים.
- שורה 9 // אנחנו משתמשים בפרוטוקול tls על מנת להצפין (ניתן גם ssl בחלק מהשרתים).
- שורה 10 // כתובת המייל שממנה נשלח (מומלץ להגדיר את אותה התיבה שאליה אנחנו מתחברים).
- שורה 11 // השם של השולח, שמתי לצורך הדוגמא את שם האתר.
אימות דו-שלבי
במידה ולתיבת ה-Gmail שלכם אתם משתמשים באימות 2 שלבי, יש להגדיר סיסמא ש-Google תייצר לכם על מנת שלא יהיה צורך באימות כפול אשר לא נתמך ב-SMTP, על מנת לייצר סיסמא זו נכנס למרכז הפרטיות בקישור הבא ונבחר בשירות את הדוא״ל ובמכשיר נבחר ״אחר״, כעת תקבלו סיסמא באורך 16 תווים שזוהי הסיסמא שלכם.
סיכום
WordPress הינה מערכת מאוד חזקה ומצויידת בטכנולוגיות אשר חוסכות הרבה כאבי ראש למשתמשים וגם למפתחים, שליחה של מיילים דרך תיבה ייעודית תמנע סימון של ההודעות שלכם כספאם (כל עוד אתם לא באמת שולחים הודעות זבל) ותאפשר לכם לשלוח ללקוחות שלכם מיילים דרך האתר מבלי לחשוש שהם יסומנו כספאם.
בהצלחה!
יש לי שאלה ממש דחופה פליזז
אם אני משתמשת במייל לא של ג'ימייל אלא עם סיומת של הדומיין שלי, איך אני מגדירה את הקוד?
אין לי נסיון בכתיבת קודים בכלל, אז ממש אשמח לתשובה מפורטת
תודה רבה רבה!!
היי אסתי,
האם את משתמשת ב-G-Suite או Office 365 בתור ניהול תיבות המייל שלך?
תודה על המאמר והמידע החשוב.
איך ניתן לבדוק בצורה הכי פשוטה שאכן מיילים נשלחים?
היי חגית,
תודה רבה על המילים, מזמין אותך להירשם לעדכונים במייל או בערוץ הטלגרם שלנו.
יש לך מספר אופציות לבדוק האם מייל נשלח:
1. לשלוח טופס צור קשר ולראות שאת מקבלת את המייל.
2. להשתמש בתוספי בדיקה שונים כמו WP Test Email.
3. להתקין תוסף SMTP כלשהו ולבצע את הבדיקה דרכו.
תודה דור על תשובתך.
אני מקבלת הודעת שגיאה:
SMTP Error: Could not authenticate
הסיסמא בטוח נכונה. מה עוד זה יכול להיות?
אם את משתמשת באימות דו-שלבי אז צריך ליצור סיסמא שעוקפת את המנגנון אימות.