SMTP சேவையக செயலாக்கப் பிழையைப் புரிந்துகொள்வது
நான் சமீபத்தில் ஒரு டுடோரியலைப் பின்பற்றி பைதான் 3.x ஐப் பயன்படுத்தி SMTP சேவையகத்தை செயல்படுத்த முயற்சித்தேன். வழங்கப்பட்ட படிகளை நெருக்கமாகப் பின்பற்றினாலும், சர்வர்-கிளையண்ட் தகவல்தொடர்புகளின் போது நான் ஒரு தொடர்ச்சியான பிழையை எதிர்கொண்டேன்.
இந்தக் கட்டுரையில், நான் எதிர்கொள்ளும் குறிப்பிட்ட சிக்கலையும் அதற்கான பிழைச் செய்திகளையும் பகிர்ந்து கொள்கிறேன். நான் பயன்படுத்திய சர்வர் மற்றும் கிளையன்ட் குறியீட்டை விவரிக்கிறேன், இந்தச் சிக்கலைத் திறம்படத் தீர்க்க சமூகத்திலிருந்து நுண்ணறிவுகள் அல்லது தீர்வுகளைப் பெறுவேன் என்று நம்புகிறேன்.
கட்டளை | விளக்கம் |
---|---|
smtpd.SMTPServer | மின்னஞ்சல்களைப் பெற தனிப்பயன் SMTP சேவையகத்தை உருவாக்கப் பயன்படுத்தப்படும் வகுப்பு. |
process_message | உள்வரும் செய்திகளின் செயலாக்கத்தைக் கையாளும் முறை. |
peer | மின்னஞ்சலை அனுப்பும் கிளையண்டின் தொலை முகவரி. |
mailfrom | அனுப்புநரின் மின்னஞ்சல் முகவரி. |
rcpttos | பெறுநரின் மின்னஞ்சல் முகவரிகளின் பட்டியல். |
asyncore.loop | இணைப்புகளைக் கையாள ஒத்திசைவற்ற வளையத்தைத் தொடங்கும் செயல்பாடு. |
SMTP சேவையகத் துண்டிப்புச் சிக்கல்களைத் தீர்க்கிறது
வழங்கப்பட்ட சர்வர் ஸ்கிரிப்ட் பயன்படுத்தி தனிப்பயன் SMTP சேவையகத்தை உருவாக்குகிறது smtpd.SMTPServer பைதான் 3.x இல் வகுப்பு. இந்த சர்வர் போர்ட் 1025 இல் உள்ள லோக்கல் ஹோஸ்டில் கேட்கிறது process_message உள்வரும் செய்திகளைக் கையாள, அனுப்புநர், பெறுநர் மற்றும் செய்தியின் நீளம் போன்ற விவரங்களைப் பதிவுசெய்யும் முறை மேலெழுதப்பட்டுள்ளது. logging தொகுதி. தி asyncore.loop செயல்பாடு சேவையகத்தை இயக்குவதற்கும் இணைப்புகளைக் கையாளுவதற்கும் ஒத்திசைவற்ற சுழற்சியைத் தொடங்குகிறது.
கிளையன்ட் ஸ்கிரிப்ட் சேவையகத்திற்கு மின்னஞ்சலை அனுப்புகிறது. இதைப் பயன்படுத்தி ஒரு செய்தியை உருவாக்குகிறது MIMEText வகுப்பு, அனுப்புநர் மற்றும் பெறுநர் முகவரிகளை வடிவமைக்கிறது email.utils.formataddr, மற்றும் பொருள் அமைக்கிறது. தி smtplib.SMTP பொருள் SMTP சேவையகத்துடன் இணைக்கப் பயன்படுகிறது, மற்றும் set_debuglevel சேவையகத்துடன் தொடர்பைக் காட்ட பிழைத்திருத்த வெளியீட்டை செயல்படுத்துகிறது. தி sendmail முறை மின்னஞ்சல் அனுப்புகிறது, மற்றும் quit முறை SMTP அமர்வை நிறுத்துகிறது.
பைத்தானைப் பயன்படுத்தி SMTP சர்வர் செயல்படுத்தல்: ஒரு தீர்வு
பைதான் 3.x: சர்வர் குறியீடு
import smtpd
import asyncore
import logging
logging.basicConfig(level=logging.DEBUG)
class CustomSMTPServer(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data):
logging.info('Receiving message from: %s', peer)
logging.info('Message addressed from: %s', mailfrom)
logging.info('Message addressed to : %s', rcpttos)
logging.info('Message length : %d', len(data))
return
server = CustomSMTPServer(('127.0.0.1', 1025), None)
logging.info("Server started ...")
asyncore.loop()
பைத்தானைப் பயன்படுத்தி SMTP கிளையண்ட் செயல்படுத்தல்: ஒரு தீர்வு
பைதான் 3.x: கிளையண்ட் குறியீடு
import smtplib
import email.utils
from email.mime.text import MIMEText
msg = MIMEText('This is the body of the message.')
msg['To'] = email.utils.formataddr(('Recipient', 'recipient@example.com'))
msg['From'] = email.utils.formataddr(('Author', 'author@example.com'))
msg['Subject'] = 'Simple test message'
server = smtplib.SMTP('127.0.0.1', 1025)
server.set_debuglevel(True)
try:
server.sendmail('author@example.com', ['recipient@example.com'], msg.as_string())
finally:
server.quit()
பைத்தானைப் பயன்படுத்தி SMTP சர்வர் செயல்படுத்தல்: ஒரு தீர்வு
பைதான் 3.x: சர்வர் குறியீடு
import smtpd
import asyncore
import logging
logging.basicConfig(level=logging.DEBUG)
class CustomSMTPServer(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data):
logging.info('Receiving message from: %s', peer)
logging.info('Message addressed from: %s', mailfrom)
logging.info('Message addressed to : %s', rcpttos)
logging.info('Message length : %d', len(data))
return
server = CustomSMTPServer(('127.0.0.1', 1025), None)
logging.info("Server started ...")
asyncore.loop()
பைத்தானைப் பயன்படுத்தி SMTP கிளையண்ட் செயல்படுத்தல்: ஒரு தீர்வு
பைதான் 3.x: கிளையண்ட் குறியீடு
கட்டளை | விளக்கம் |
---|---|
email.utils.formataddr | 'வருதல்' அல்லது 'வருதல்' தலைப்புப் புலங்களுக்கான மின்னஞ்சல் முகவரியை வடிவமைக்கிறது. |
MIMEText | உரை/சமவெளி வகையின் MIME பொருள்களை உருவாக்கப் பயன்படுத்தப்படும் வகுப்பு. |
set_debuglevel | SMTP இணைப்பின் பிழைத்திருத்த வெளியீட்டு அளவை அமைக்கிறது. |
sendmail | SMTP இணைப்பைப் பயன்படுத்தி மின்னஞ்சலை அனுப்புகிறது. |
quit | SMTP அமர்வை நிறுத்துகிறது. |
SMTP சர்வர் துண்டிப்புச் சிக்கல்களைத் தீர்க்கிறது
வழங்கப்பட்ட சர்வர் ஸ்கிரிப்ட் பயன்படுத்தி தனிப்பயன் SMTP சேவையகத்தை உருவாக்குகிறது smtpd.SMTPServer பைதான் 3.x இல் வகுப்பு. இந்த சர்வர் போர்ட் 1025 இல் உள்ள லோக்கல் ஹோஸ்டில் கேட்கிறது process_message உள்வரும் செய்திகளைக் கையாள, அனுப்புநர், பெறுநர் மற்றும் செய்தியின் நீளம் போன்ற விவரங்களைப் பதிவுசெய்யும் முறை மேலெழுதப்பட்டுள்ளது. logging தொகுதி. தி asyncore.loop செயல்பாடு சேவையகத்தை இயக்குவதற்கும் இணைப்புகளைக் கையாளுவதற்கும் ஒத்திசைவற்ற சுழற்சியைத் தொடங்குகிறது.
கிளையன்ட் ஸ்கிரிப்ட் சேவையகத்திற்கு மின்னஞ்சலை அனுப்புகிறது. இதைப் பயன்படுத்தி ஒரு செய்தியை உருவாக்குகிறது MIMEText வகுப்பு, அனுப்புநர் மற்றும் பெறுநர் முகவரிகளை வடிவமைக்கிறது email.utils.formataddr, மற்றும் பொருள் அமைக்கிறது. தி smtplib.SMTP பொருள் SMTP சேவையகத்துடன் இணைக்கப் பயன்படுகிறது, மற்றும் set_debuglevel சேவையகத்துடன் தொடர்பைக் காட்ட பிழைத்திருத்த வெளியீட்டை செயல்படுத்துகிறது. தி sendmail முறை மின்னஞ்சல் அனுப்புகிறது, மற்றும் quit முறை SMTP அமர்வை நிறுத்துகிறது.
import smtplib
import email.utils
from email.mime.text import MIMEText
msg = MIMEText('This is the body of the message.')
msg['To'] = email.utils.formataddr(('Recipient', 'recipient@example.com'))
msg['From'] = email.utils.formataddr(('Author', 'author@example.com'))
msg['Subject'] = 'Simple test message'
server = smtplib.SMTP('127.0.0.1', 1025)
server.set_debuglevel(True)
try:
server.sendmail('author@example.com', ['recipient@example.com'], msg.as_string())
finally:
server.quit()
SMTP சேவையக செயலாக்க சிக்கல்களை பிழைத்திருத்தம்
ஒரு SMTP சேவையகத்தை செயல்படுத்தும் போது, ஒரு முக்கியமான அம்சம் கிளையன்ட்-சர்வர் தொடர்பை சரியாக கையாளுவதை உறுதி செய்வதாகும். பைத்தானில், தி smtpd.SMTPServer வகுப்பு மின்னஞ்சல்களைப் பெறுவதற்கான கட்டமைப்பை வழங்குகிறது, ஆனால் எதிர்பாராத துண்டிப்புகள் போன்ற பிழைத்திருத்த சிக்கல்கள் சவாலானதாக இருக்கலாம். இதைத் தணிப்பதற்கான ஒரு அணுகுமுறை, சேவையகத்தின் செயல்பாடுகளைக் கண்காணிக்க லாக்கிங் பயன்படுத்துவதாகும். தி logging தொகுதி சேவையகத்தால் செயலாக்கப்படும் செய்திகளைப் பற்றிய விரிவான தகவலைப் பிடிக்க உதவுகிறது, எங்கு துண்டிக்கப்படுகிறது என்பதைக் கண்டறிய உதவுகிறது.
மற்றொரு முக்கியமான அம்சம் கிளையன்ட் ஸ்கிரிப்டில் விதிவிலக்குகளைக் கையாள்வது. தி smtplib லைப்ரரி மின்னஞ்சல்களை அனுப்ப உதவுகிறது, ஆனால் இணைப்பு எதிர்பாராதவிதமாக மூடப்பட்டால், சரியான விதிவிலக்கு கையாளுதல் கிளையன்ட் ஸ்கிரிப்ட் அழகாக முடிவடைவதை உறுதி செய்கிறது. ஒரு வலுவான முயற்சியை செயல்படுத்துதல்-இறுதியாக சுற்றிலும் தடுக்கவும் sendmail மற்றும் quit கையாளப்படாத விதிவிலக்குகள் கிளையன்ட் ஸ்கிரிப்டை செயலிழக்கச் செய்வதிலிருந்து முறைகள் தடுக்கலாம். ஒன்றாக, இந்த நுட்பங்கள் SMTP சர்வர்-கிளையன்ட் செயல்படுத்தலின் நம்பகத்தன்மை மற்றும் பிழைத்திருத்தத்தை மேம்படுத்துகின்றன.
SMTP சேவையக சிக்கல்களுக்கான பொதுவான கேள்விகள் மற்றும் தீர்வுகள்
- எனது SMTP சேவையக இணைப்பு ஏன் எதிர்பாராத விதமாக மூடப்படுகிறது?
- நெட்வொர்க் சிக்கல்கள் அல்லது தவறான சர்வர் உள்ளமைவு உள்ளிட்ட பல்வேறு காரணங்களால் இது இருக்கலாம். சேவையகம் இயங்குகிறது மற்றும் அணுகக்கூடியது என்பதை உறுதிப்படுத்தவும்.
- பைத்தானில் SMTP தொடர்பை எவ்வாறு பிழைத்திருத்துவது?
- அமைப்பதன் மூலம் பிழைத்திருத்த வெளியீட்டை இயக்கவும் server.set_debuglevel(True) கிளையன்ட் ஸ்கிரிப்ட்டில் SMTP கட்டளைகள் மற்றும் பதில்களைப் பார்க்கவும்.
- பங்கு என்ன process_message SMTP சர்வரில் உள்ள முறை?
- இது உள்வரும் மின்னஞ்சல் செய்திகளின் செயலாக்கத்தைக் கையாளுகிறது, விவரங்களைப் பதிவு செய்ய அல்லது செய்தி உள்ளடக்கத்தின் அடிப்படையில் குறிப்பிட்ட செயல்களைச் செய்ய உங்களை அனுமதிக்கிறது.
- SMTP கிளையன்ட் ஸ்கிரிப்ட்டில் உள்ள விதிவிலக்குகளை எப்படி சரியாக கையாள்வது?
- ஒரு முயற்சியைப் பயன்படுத்தவும்-இறுதியாக சுற்றிலும் தடுக்கவும் sendmail மற்றும் quit பிழை ஏற்பட்டாலும் இணைப்பு சரியாக மூடப்பட்டிருப்பதை உறுதி செய்வதற்கான முறைகள்.
- எனக்கு ஏன் தேவை asyncore.loop சர்வர் ஸ்கிரிப்ட்டில் செயல்படுமா?
- இது உள்வரும் இணைப்புகளைக் கையாளும் மற்றும் சேவையகத்தை இயங்க வைக்கும் ஒத்திசைவற்ற வளையத்தைத் தொடங்குகிறது.
- சேவையகத்தில் உள்வரும் மின்னஞ்சல்கள் பற்றிய விரிவான தகவல்களை எவ்வாறு பதிவு செய்வது?
- பயன்படுத்த logging அனுப்புநர், பெறுநர் மற்றும் செய்தியின் நீளம் போன்ற விவரங்களைப் பதிவு செய்வதற்கான தொகுதி process_message முறை.
- என்ன காரணமாக இருக்கலாம் SMTPServerDisconnected பிழை?
- சர்வர் எதிர்பாராதவிதமாக இணைப்பை மூடும்போது இந்தப் பிழை ஏற்படுகிறது. செய்தி செயலாக்கத்தின் போது ஏதேனும் பிழைகள் அல்லது சிக்கல்கள் உள்ளதா என சர்வர் பதிவுகளைச் சரிபார்க்கவும்.
- கிளையன்ட் ஸ்கிரிப்ட்டில் மின்னஞ்சல் முகவரிகளை எப்படி வடிவமைப்பது?
- பயன்படுத்த email.utils.formataddr 'To' மற்றும் 'From' புலங்களுக்கான முகவரிகளை வடிவமைக்கும் முறை.
- இதன் நோக்கம் என்ன MIMEText வர்க்கம்?
- மின்னஞ்சலுக்கு உரை/சமவெளி வகையிலான MIME பொருள்களை உருவாக்க இது பயன்படுகிறது, இது எளிய உரைச் செய்திகளை அனுப்ப உங்களை அனுமதிக்கிறது.
நம்பகமான SMTP தொடர்பை உறுதி செய்தல்
வழங்கப்பட்ட சர்வர் ஸ்கிரிப்ட் பயன்படுத்தி தனிப்பயன் SMTP சேவையகத்தை உருவாக்குகிறது smtpd.SMTPServer பைதான் 3.x இல் வகுப்பு. இந்த சர்வர் போர்ட் 1025 இல் உள்ள லோக்கல் ஹோஸ்டில் கேட்கிறது process_message உள்வரும் செய்திகளைக் கையாள, அனுப்புநர், பெறுநர் மற்றும் செய்தியின் நீளம் போன்ற விவரங்களைப் பதிவுசெய்யும் முறை மேலெழுதப்பட்டுள்ளது. logging தொகுதி. தி asyncore.loop செயல்பாடு சேவையகத்தை இயக்குவதற்கும் இணைப்புகளைக் கையாளுவதற்கும் ஒத்திசைவற்ற சுழற்சியைத் தொடங்குகிறது.
கிளையன்ட் ஸ்கிரிப்ட் சேவையகத்திற்கு மின்னஞ்சலை அனுப்புகிறது. இதைப் பயன்படுத்தி ஒரு செய்தியை உருவாக்குகிறது MIMEText வகுப்பு, அனுப்புநர் மற்றும் பெறுநர் முகவரிகளை வடிவமைக்கிறது email.utils.formataddr, மற்றும் பொருள் அமைக்கிறது. தி smtplib.SMTP பொருள் SMTP சேவையகத்துடன் இணைக்கப் பயன்படுகிறது, மற்றும் set_debuglevel சேவையகத்துடன் தொடர்பைக் காட்ட பிழைத்திருத்த வெளியீட்டை செயல்படுத்துகிறது. தி sendmail முறை மின்னஞ்சல் அனுப்புகிறது, மற்றும் quit முறை SMTP அமர்வை நிறுத்துகிறது.
SMTP சேவையகங்களை சரிசெய்வதற்கான இறுதி எண்ணங்கள்
Python 3.x இல் SMTP சேவையகத்தை அமைப்பது, சர்வர் மற்றும் கிளையன்ட் குறியீடு இரண்டையும் கவனமாகக் கையாளுவதை உள்ளடக்குகிறது. பதிவுசெய்தலைச் செயல்படுத்துவது சிக்கல்களைக் கண்டறிந்து சர்வர் நடத்தையைப் புரிந்துகொள்ள உதவுகிறது. கூடுதலாக, கிளையன்ட் ஸ்கிரிப்ட்டில் சரியான விதிவிலக்கு கையாளுதல் எதிர்பாராத துண்டிப்புகள் அழகாக நிர்வகிக்கப்படுவதை உறுதி செய்கிறது. இந்த நடைமுறைகளைப் பின்பற்றுவதன் மூலம், நீங்கள் மிகவும் நம்பகமான மற்றும் வலுவான SMTP சேவையக செயலாக்கத்தை அடையலாம்.