You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中拆分数据库获取的邮箱列表以适配msg["To"]字段

Hey there! Let's figure out how to split those emails from your database so they work perfectly with the msg["To"] field in Python. I'll break this down clearly for you, covering common scenarios you might run into.

Handling Email Splitting for msg["To"]

First, a quick note: most email libraries (like Python's built-in email module) expect the To field to be either a comma-separated string of email addresses or a list of addresses. We'll cover both cases based on what your database returns.

Scenario 1: Database returns a single string with separated emails

It's common for databases to store multiple emails as a single string, separated by commas, semicolons, or even spaces. Here's a function to normalize and split this into a format msg["To"] accepts:

def split_emails(email_str):
    # Replace semicolons with commas, remove any extra spaces
    normalized = email_str.replace(';', ',').replace(' ', '')
    # Split into individual emails and filter out empty strings (just in case)
    email_list = [email for email in normalized.split(',') if email]
    # Join back into a comma-separated string (the standard format for To fields)
    return ','.join(email_list)

Example Usage

# Let's say this is what you get from your database
db_email_data = "rahul.gour@example.com, jane.doe@test.org; bob_smith@company.net"
formatted_to = split_emails(db_email_data)

# Now you can directly assign this to msg["To"]
msg["To"] = formatted_to
# Result: "rahul.gour@example.com,jane.doe@test.org,bob_smith@company.net"

Scenario 2: Database returns a list of emails

If your database already gives you a list of email addresses (with possible extra spaces or empty entries), use this function to clean and format it:

def format_email_list(email_list):
    # Strip whitespace from each email and filter out empty/invalid entries
    valid_emails = [email.strip() for email in email_list if email.strip()]
    # Join into the required comma-separated string
    return ','.join(valid_emails)

Example Usage

# Sample list from your database
db_email_list = ["rahul.gour@example.com", "  jane.doe@test.org  ", "", "bob_smith@company.net"]
formatted_to = format_email_list(db_email_list)

msg["To"] = formatted_to
# Result: "rahul.gour@example.com,jane.doe@test.org,bob_smith@company.net"

Bonus: Add Email Validation

To make sure you're only passing valid emails to msg["To"], you can add a regex check. Here's an enhanced version of the split function:

import re

def is_valid_email(email):
    # Basic regex pattern for email validation
    email_pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
    return re.match(email_pattern, email) is not None

def split_and_validate_emails(email_str):
    normalized = email_str.replace(';', ',').replace(' ', '')
    # Only keep emails that pass validation
    valid_emails = [email for email in normalized.split(',') if email and is_valid_email(email)]
    return ','.join(valid_emails)

This way, you avoid sending emails to malformed addresses that might cause errors later.

内容的提问来源于stack exchange,提问作者Rahul Gour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:31:16