python send_message() & sendmail()

在Python中,您可以使用SMTP(簡單郵件傳輸協議)來發送電子郵件。有兩個主要的方法可以使用:SMTP.send_message()和SMTP.sendmail()。

send_message() 是一種快捷方法,用于带着消息调用 sendmail(),消息由 email.message.Message 对象表示。参数的含义与 sendmail() 中的相同,除了 msg,它是一个 Message 对象。

import smtplib
from email.message import EmailMessage

# 创建邮件对象
msg = EmailMessage()
msg['Subject'] = 'Test Email'
msg['From'] = 'sender@example.com'
msg['To'] = 'recipient@example.com'
msg.set_content('Hello word.')

# 创建SMTP对象
server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()

# 登录SMTP服务器
server.login('sender@example.com', 'password')

# 打印出和SMTP服务器交互的所有信息。
smtp.set_debuglevel(1)               

# 发送电子邮件
server.send_message(msg)

# 关闭SMTP连接
server.quit()

初學者推薦使用send_message()

Python 工廠模式

在 Python 中,可以使用工廠函數或工廠類來實現工廠模式。工廠函數是一個接受一組參數並返回一個對象的函數,而工廠類是一個包含了一個或多個抽象方法或抽象屬性的抽象基類。通過使用工廠模式,可以將對象的創建過程封裝起來,以便在需要時可以方便地更改對象的創建方式。

以下是一個 Python 工廠模式的範例:

class CarFactory:
    def create_car(self, car_type):
        if car_type == 'sport':
            return SportCar()
        elif car_type == 'suv':
            return SUV()
        else:
            raise ValueError('Invalid car type')

class SportCar:
    def __init__(self):
        self.color = 'red'
        self.engine = 'v8'

class SUV:
    def __init__(self):
        self.color = 'white'
        self.engine = 'v6'

在上面的代碼中,CarFactory是一個工廠類,它提供了一個名為create_car的 方法,該方法根據傳入的car_type參數返回一個相應的汽車對象。在這里,我們定義了兩個子類別:SportCar和SUV,它們分別表示運動型汽車和SUV型汽車。

在主程序中,我們可以這樣使用上述工廠類:

factory = CarFactory()
sport_car = factory.create_car('sport')
print(sport_car.color, sport_car.engine) # 輸出:red v8

suv = factory.create_car('suv')
print(suv.color, suv.engine) # 輸出:white v6

在這里,我們首先創建了一個CarFactory的實例,然後使用它來創建一個運動型汽車和一個SUV型汽車的對象。