Python:操作HmailServer实现邮箱用户注册、收发邮件

3 篇文章 0 订阅

HmailServer提供的是C#接口,没有办法直接用Python操作。但是我的后台是用Python写的,所以解决办法是:实际用C#来操作HmailServer,然后生成.dll文件工python调用。

C#操作HmailServer的方法(实现邮箱注册、发邮件)

看这里

C#项目生成.dll文件的方法

看这里



python调用.dll创建用户、发邮件

接下来是通过python来调用C#的.dll文件中的对象、方法来实现创建用户和发邮件的功能。收邮件功能直接用python实现。

在pycharm中先引入几个模块:
comtypes,pythonnet,imbox
在这里插入图片描述

C#项目大致内容:

namespace MyDll
{
    public class Email
    {
        // hmailserver
        string USERNAME = "Administrator";
        string PASSWORD = "password";
        string DOMAIN = "nico.com";
        string IP = "192.168.0.107";
        int PORT = 587;

        public string addUser(string email, string password)
        {
            Application mailserver = new hMailServer.Application();
            //admin登录验证
            mailserver.Authenticate(USERNAME, PASSWORD);
            // 获取*.com 域
            var domain = mailserver.Domains.ItemByName[DOMAIN];
            var obAccounts = domain.Accounts;
            var obNewAccount = obAccounts.Add();
            obNewAccount.Address = email;
            obNewAccount.Password = password;
            obNewAccount.Active = true;
            obNewAccount.MaxSize = 500; //500mb
            obNewAccount.Save();
            return "success";
        }

		// 邮件信息
        public class MailInfo
        {
            public string From;
            public string to;
            public string subject;
            public string body;
        }

        public string sendmail(string eml, string psw, MailInfo mailInfo)
        {
            MailMessage mailObject = new MailMessage();
            //设置发件人
            mailObject.From = new MailAddress(mailInfo.From); //发件人地址
            //设置收件人
            mailObject.To.Add(new MailAddress(mailInfo.to));

            //为了防止乱码,设置主题编码格式
            mailObject.SubjectEncoding = Encoding.UTF8;
            mailObject.Subject = mailInfo.subject;
            //设置正文编码格式
            mailObject.BodyEncoding = Encoding.UTF8;
            mailObject.Body = mailInfo.body;
            //2.创建一个发送邮件的对象
            SmtpClient smtpClient = new SmtpClient();
            smtpClient.Host = IP; //设置服务器ip地址
            smtpClient.Port = PORT; //端口号

            smtpClient.Credentials = new NetworkCredential(eml, psw);
            //发送
            smtpClient.Send(mailObject);
            return "success";
        }
    }
}





创建用户

python:

import clr
clr.AddReference('../MyDll/MyDll/bin/Debug/MyDll') # dll文件的相对路径 用以加载dll文件
from MyDll import * # 引入命名空间

在pycharm中这个位置会一直标红,不用理会,项目是可以运行的。
在这里插入图片描述

接下来就可以在python中直接使用C#的对象了。

先实现创建用户

obj = Email() # 创建一个对象
email = 'test@nico.com' # 想要创建的账号和密码
password = 'test'

print(obj.addUser(email, password))

运行。成功创建用户,将在控制台打印出 “success” 字段。
在这里插入图片描述
在HmailServer中查看,用户已被创建
在这里插入图片描述





发邮件

# 邮件信息
mailinfo = obj.MailInfo()  
mailinfo.From = "test@nico.com" # 发件人
mailinfo.to = "test1@nico.com"  #收件人
mailinfo.subject = "hi"  # 邮件主题
mailinfo.body = "i am body"  # 邮件内容

print(obj.sendmail(email, password, mailinfo)) 

运行。成功发送邮件,将在控制台打印出 “success” 字段。




python收取邮件

把刚刚发送到test1的那封邮件读取出来

from imbox import Imbox  # 引入imbox模块
with Imbox('192.168.0.107',  # hmailserver服务器ip地址
        username='test1@nico.com',  # 收件人登录
        password='test1',
        ssl=False,
        ssl_context=None,
        starttls=False) as imbox:
	all_mails = imbox.messages()
	# 读取收件箱所有信息
    for uid, messages in all_mails:
        print(messages.subject)
        # 输出邮件主题
        print(messages.body['plain'])
        # 输出邮件内容以文本格式
        print(uid)

运行结果
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值