Friday, October 24, 2014

PHP - mail() function மூலம் மின்னஞ்சல் அனுப்புதல்

மின்-வணிகமயமாகி விட்ட இக்காலத்தில் வாடிக்கையாளர்களை கையாள்வது என்பதுதான் வணிக நிறுவனங்களின் முக்கியமான வேலையாக இருக்கிறது. காரணம் என்னவென்றால் போட்டி மிகுந்த வணிக சூழல், ஒவ்வொரு நிறுவனமும் தன்னிடம் வரும் வாடிக்கையாளர்களை தக்கவைத்து கொள்ள அனைத்து விதமான உத்திகளையும் கையாளுகிறது. இன்றைய வணிக சூழலில் கிட்டதட்ட அனைத்து நிறுவனங்களுமே தங்களது நிறுவனத்திற்கென தனியாக ஒரு இணையதளத்தை வைத்திருக்கிறது. அந்த இணைய இணையதளத்தில் நிறுவனத்தினுடைய அனைத்து சேவைகளையும் நுகர்வோரும், வாடிக்கையாளரும் அனுபவிக்கும் வகையில் அனைத்து வசதிகளையும் ஒவ்வொரு நிறுவனமும் ஏற்படுத்தி வைத்திருக்கிறது.


வாடிக்கையாளர்களை கையாளும் உத்திகளில் ஒன்றுதான், வாடிக்கையாளர்களிடமிருந்து Feedback பெறுதல் மற்றும் வாடிக்கையாளர்களின் குறைகளை கேட்டு பெற்று அதற்கான தீர்வுகளை ஏற்படுத்துதல்.

உதாரணமாக நான் Open Source For You(OSFY) Magazine னுடைய சந்தாதாரராக கடந்து 7 வருடங்களாக்க இருந்து வருகிறேன். எனக்கு ஏதாவது ஒரு இதழ் தாமதமாகினாலோ அல்லது வர தவறினாலோ நான் OSFY இன் இணையதளத்திற்கு சென்று அதற்கென தனியாக கொடுத்துள்ள படிவத்தில் என்னுடைய குறைகளை பதிவு செய்வேன். நான் அனுப்பும் விபரங்கள் support@efy.in எனும் முகவரிக்கு மின்னஞ்சல் செய்யப்படும். அவர்கள் உடனடியாக என்னுடைய வேண்டுகோளை ஏற்றுக்கொண்டு இதழை அனுப்பி வைப்பர்.

இதுபோன்று மின்னஞ்சல் அனுப்புவதற்கென PHP யில் உள்ள Function தான் mail() எனும் Fuction. இந்த Fuction மூலமாக நாம் தற்போது நடைமுறையில் பயன்படுத்திக்கொண்டிருக்கும் மின்னஞ்சல் வசதிகளைப் போல் Bcc, Cc போன்றவற்றையும் செய்யலாம்.

இணையதளத்தினை வடிவமைத்தப் பின்னர் அது Web Server இல் Hosting செய்யப்படும். நாம் நிறுவனத்தினுடைய இணையதள முகவரியை Browser இல் இயக்கும் போது, இணையதளம் எந்த வழங்கியில்(server) உள்ளதோ அங்கிருந்து நம்முடைய கணினிக்கு இணைய இணைப்பு(Internet Connection) மூலமாக Browser இன் உதவியோடு காண்பிக்கப்படும். இணையதளத்தினை வடிவமைத்த தனிநபர் கணினியிலிந்து(PC or Laptop) இணையதளம் நமக்கு வழங்கப்பட மாட்டாது.

PHP இல் இந்த mail() function ஐ நான் என்னுடைய மடிக்கணினியில் தான் இயக்கி பார்த்தேன். அப்பொழுது எனக்கு எழுந்த சந்தேகம் என்னவென்றால் இவ்வளவு எளிமையாக php மூலமாக மின்னஞ்சல் அனுப்பி விட முடியுமா! பரவாயில்லையே எவ்வளவு எளிமையாக இருக்கிறது என்று எனக்கு தோன்றியது. ஆனால் இதை இயக்கிப் பார்த்து விட்டு என்னுடைய மின்னஞ்சலின் Inbox ஐப் பார்த்தால் நான் php mail() function  மூலமாக அனுப்பிய மின்னஞ்சல் வந்து சேரவில்லை.

நாம் Hosting செய்யும் Server இல் அனைத்து வழங்கிகளும்(Mail Server, File Server, Database Server) நிறுவப்பட்டு இருக்கும். ஆகையால் நாம் மற்றவைகளைப் பற்றி கவலைப்பட வேண்டியதில்லை. நிரலை மட்டும் கவனமாக எழுதி, Server இல் ஏற்றிவிட்டால் போதும். அது வேலை செய்ய தொடங்கும்.

ஏன் மின்னஞ்சல் வந்து சேரவில்லை என என்னுடைய தேடலை தொடங்கினேன். அந்த தேடல் மூலம் நிறைய தெரிந்து கொண்டேன். அதில் வெற்றியும் பெற்றேன். அவ்வாறு ஒரு தனிநபர் கணினியிலிருந்து php mail() மூலம் எப்படி மின்னஞ்சல் அனுப்புவது என்பதைப்பற்றிதான் நாம் இங்கு பார்க்க போகிறோம்.

மின்னஞ்சல்களை கையாள்வதற்கு Mail Server என்ற ஒன்று கட்டாயம் தேவை. நாம் Browser மூலமாக சென்று அனுப்புவது என்பது வேறு அதையும் இதையும் போட்டு குழப்பிக்க வேண்டியதில்லை. Mail Server என்ற ஒன்று இருந்தால் தான் நாம் நம்முடைய மின்னஞ்சல்களை PHP அல்லது எந்தவொரு நிரலின் மூலமும் அனுப்ப மற்றும் பெற முடியும்.

நான் செய்து பார்த்தது என்னுடைய உபுண்டு 14.04.1 LTS இல், Mobile மூலமாக 2G இணைய இணைப்பு வைத்திருந்தேன். விண்டோஸ் இயங்குதளத்திற்கு இந்த வழிமுறைகள் சற்றே வித்தியாசமாக இருக்கும்.

முதலில் நாம் நம்முடைய கணினியில் Mail Server ஐ நிறுவ வேண்டும். Postfix ஐப் போன்று இதற்கென சில பிரத்தியோகமான Mail Server கள் இருக்கின்றன. ஆனால் நான் நிறுவியது sendmail மற்றும் msmtp எனும் எளிமையான Mail Server Agent களை. முனையத்தை(Terminal) திறந்து கீழ்காணும் கட்டளை வரிகளைக் கொடுத்து Mail Server ஐ நிறுவிக்கொள்ளவும்.

sudo apt-get update
sudo apt-get install msmtp sendmail

அதன்பின் முனையத்தில் sudo gedit /etc/php5/apache2/php.ini என கொடுத்து php.ini கோப்பில் [mail function] எனும் பகுதியில் கீழ்காணும் வரிகளை உள்ளீடு செய்யவும்.

SMTP = localhost
smtp_port = 25
sendmail_path = /usr/sbin/sendmail -t
mail.add_x_header = On


அடுத்ததாக sudo gedit /etc/ssmtp/ssmtp.conf என முனையத்தில் கொடுத்து ssmtp.conf கோப்பில் கீழ்காணும் வரிகளை உள்ளீடு செய்யவும்.

root=postmaster
hostname=Lenovo-B460e
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=linuxkathirvel.info@gmail.com
AuthPass=[your mail account password]

இங்கு hostname, mailhub, AuthUser, AuthPass போன்றவைகளின் மதிப்புகள் உங்களின் விருப்பம் மற்றும் தேவைக்கு ஏற்ப மாறுபடும். நான் Gmail பயன்படுத்துவதால் அதற்கேற்ப அமைத்துள்ளேன்.


அடுத்ததாக /etc/hosts எனும் கோப்பை கீழ்காணும் விதமாக அமைக்கவும்.


இறுதியில் Apache Web Server ஐ மறுதொடக்கம்(restart) செய்யவும்.


mail() function syntax:

mail($to, $subject, $message)

இங்கு to என்பதில் யாருக்கு மின்னஞ்சல் அனுப்ப வேண்டுமோ அவர்களின் மின்னஞ்சல் முகவரியை கொடுக்க வேண்டும். subject என்பதில் மின்னஞ்சலின் பொருள், message என்பதில் என்ன செய்தியோ அவற்றையும் கொடுக்க வேண்டும். கீழ்காணும் படத்தில் தெளிவாக காணலாம்.

நிரல்:

mail('linuxkathirvel.info@gmail.com','Hello, Welcome','FOSS - Free Open Source Software');


நிரலை இயக்கவும்.


mail() function மூலம் அனுப்பிய மின்னஞ்சல் என்னுடைய Gmail Inbox இல். நான் அனுப்பிய மின்னஞ்சல் Inbox தெரிவதற்கு பதிலாக Spam இல் கிடைத்தது.

மின்னஞ்சல் கிடைத்ததில் உண்மையிலேயே மகிழ்ச்சி !!!

இந்த மின்னஞ்சலை அனுப்ப நான் பட்ட பாட்டை கீழே காணவும்.