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

如何用MailKit在发送的邮件中设置个人资料头像?

用C# + MailKit设置发件人个人资料头像

你提到的邮件中发件人旁的缩略头像,多数邮件客户端默认读取发件人邮箱关联的全局账号头像(比如Gmail/Outlook账号设置的头像),但也可以通过MailKit给邮件附加vCard(电子名片)的方式,指定自定义头像供客户端识别。

方法一:通过MailKit添加vCard附件实现

修改你现有代码,添加带头像的vCard附件,客户端会读取vCard中的照片信息作为发件人头像:

using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
using MimeKit.Text;
using MimeKit.Cryptography;

namespace MailKitTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建邮件消息
            var email = new MimeMessage();
            email.From.Add(MailboxAddress.Parse("Ok Novità <test@test.it>"));
            email.To.Add(MailboxAddress.Parse("test@test.it"));
            email.Subject = "Test Email Subject";
            
            // 原邮件正文
            var body = new TextPart(TextFormat.Html) { Text = "<h1>Example HTML Message Body</h1>" };

            // 创建带头像的vCard
            var vcard = new vCard();
            vcard.FormattedName = "Ok Novità";
            vcard.EmailAddresses.Add(new vCardEmailAddress("test@test.it"));

            // 加载本地头像图片(替换为你的图片路径,支持JPG/PNG)
            using var avatarStream = File.OpenRead("your-avatar.jpg");
            var photo = new vCardPhoto(avatarStream, "image/jpeg"); // 图片格式对应修改,比如image/png
            vcard.Photo = photo;

            // 将vCard转为邮件附件
            var vcardAttachment = new MimePart("text", "vcard")
            {
                Content = new MimeContent(vcard.ToStream()),
                ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
                ContentTransferEncoding = ContentEncoding.Base64,
                FileName = "contact.vcf"
            };

            // 组合正文和附件为多部分邮件
            var multipart = new Multipart("mixed");
            multipart.Add(body);
            multipart.Add(vcardAttachment);
            email.Body = multipart;

            // 发送邮件
            using var smtp = new SmtpClient();
            smtp.Connect("[custom_smtp]", 587, SecureSocketOptions.StartTls);
            smtp.Authenticate("[custom_username]", "[custom_password]");
            smtp.Send(email);
            smtp.Disconnect(true);
        }
    }
}

注意:部分邮件客户端(比如iOS邮件)可能优先显示账号关联的全局头像,而非vCard中的照片,这种情况下需要结合方法二。

方法二:设置邮箱账号的全局头像

如果不需要针对单封邮件自定义头像,最稳妥的方式是直接在发件人邮箱的服务商后台设置头像:

  • 若使用Gmail:登录Google账号,进入「个人资料」页面上传头像
  • 若使用Outlook/Exchange:登录微软365账号,在「我的资料」中设置头像
  • 其他邮箱服务商(如QQ邮箱、网易邮箱)同理,在账号设置中上传头像

设置完成后,所有从该邮箱发出的邮件,客户端都会自动显示这个头像,无需代码处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:05:52