在 Windows 中的 Windows 移动应用程序中发送邮件

2023-12-19

我是 Windows Mobile 应用程序的新手。在我的项目中,我想使用发送电子邮件microsoft.windowsmobile.pocketoutlook。到目前为止我有以下代码:

private void btnsubmit_Click(object sender, EventArgs e)
{
    try
    { 
        totleave();
        OutlookSession ol = new OutlookSession();
        EmailMessage em = new EmailMessage();
        //Recipient  s1 = em.From;
        //Console.WriteLine(s1);
        Recipient r = new Recipient("iyalarasi.r", "[email protected] /cdn-cgi/l/email-protection");
        em.To.Add(r);
        em.Subject = "Request For Leave";
        em.BodyText =txtename.Text +"(Emp id:"+txteno.Text+ ")" + " request "+ cb1.SelectedItem.ToString()+" leave from "+dtpfrom .Value
            .ToShortDateString ()+" to "+dtpto .Value.ToShortDateString ()  + "\n The reason is " + txtreason.Text;
        EmailAccount ea = ol.EmailAccounts[0];
        ea.Send(em);
        // em.Send("iyalarasi.r");//Account name in outlook
        //MessagingApplication.Synchronize("iyalarasi.r");
        MessageBox.Show("mail sent");
        f2.Show();
        f2.lblmsg.Text = "You have Applied Leave";
    }
    catch (PocketOutlookException ex)
    {
        lblmsg1.Text = ex.ToString();
    }
    catch (Exception e1)
    {
        lblmsg1.Text = e1.ToString();
    }
}

使用此代码,电子邮件会出现在发件箱中,但不会出现在收件箱中。 使用 Gmail,它显示以下消息:

无法发送消息。检查您的网络覆盖范围以及您的帐户信息是否正确,然后重试。

我的账户信息是正确的。到底是怎么回事?


我已经使用 POOM 从 Windows Mobile 设备发送电子邮件:

我使用代码来迭代可用的 Outlook 电子邮件帐户。字符串 sMailAccount 具有 pocketOuttlook 中显示的帐户名称,例如“Google Mail”:

sendMail 类的类代码...

    public sendMail(string sMailAccount)
    {
        session = new OutlookSession();
        //eMail = new EmailMessage();
        bool bFound = false;
        foreach (Account acc in session.EmailAccounts)
        {
            System.Diagnostics.Debug.WriteLine(acc.Name);
            if (acc.Name == sMailAccount)
                bFound = true;
        }
        if (bFound)
            account = session.EmailAccounts[sMailAccount];
        if (account != null)
            _bIsValidAccount = true;
    }
    ...

我的代码用于将图像发送给收件人:

    public bool send(string sImagePath)
    {
        if (account == null)
            return false;
        try
        {
            eMail = new EmailMessage();
            rcp = new Recipient(_to);
            eMail.To.Add(rcp);
            eMail.Subject = "Visitenkarten";
            eMail.BodyText = "VCard " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "\r\nsent from eMDI2Mail";

            attachement = new Attachment(sImagePath);
            eMail.Attachments.Add(attachement);                
            eMail.Send(account);                
            //account.Send(eMail);
            if (this._syncImmediately)
            {
                if (this.account != null)
                    Microsoft.WindowsMobile.PocketOutlook.MessagingApplication.Synchronize(this.account);
            }
            return true;
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine("Exception in send(): " + ex.Message);
        }
        return false;
    }

另一个需要了解的问题是 POutlook 不会立即发送邮件。因此我引入了一个名为 _syncImmediately 的 var。如果属实,Outlook 将立即发送邮件。如果没有,我提供另一个名为syncNow()的函数:

    /// <summary>
    /// sync eMail in outlook
    /// </summary>
    /// <param name="pHandle">handle to forground window</param>
    public void syncNow(IntPtr pHandle)
    {
        if (this.account != null)
        {
            Microsoft.WindowsMobile.PocketOutlook.MessagingApplication.Synchronize(this.account);
            SetForegroundWindow(pHandle);
        }
    }

SetForeGroundWindow() 用于将我们带回到应用程序。

这是整个班级:

    using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;

using System.Runtime.InteropServices;

using Microsoft.WindowsMobile.PocketOutlook;

namespace eMdiMail
{
    class sendMail:IDisposable
    {
        [DllImport("coredll", EntryPoint = "SetForegroundWindow")]
        private static extern bool SetForegroundWindow(IntPtr hWnd);

        OutlookSession session;
        public EmailAccount account;
        EmailMessage eMail;
        public String _to = "[email protected] /cdn-cgi/l/email-protection";
        Attachment attachement;
        Recipient rcp;

        bool _syncImmediately = false;
        public bool syncImmediately
        {
            get { return _syncImmediately; }
            set { _syncImmediately = value; }
        }
        bool _bIsValidAccount = false;
        public bool bIsValidAccount
        {
            get
            {
                return _bIsValidAccount;
            }
        }
        public bool setAccount(string sMailAccount)
        {
            session.Dispose();
            session = new OutlookSession();
            //eMail = new EmailMessage();
            bool bFound = false;
            foreach (Account acc in session.EmailAccounts)
            {
                if (acc.Name == sMailAccount)
                {
                    account = session.EmailAccounts[sMailAccount];
                    bFound = true;
                }
            }
            return bFound;
        }
        public sendMail(string sMailAccount)
        {
            session = new OutlookSession();
            //eMail = new EmailMessage();
            bool bFound = false;
            foreach (Account acc in session.EmailAccounts)
            {
                System.Diagnostics.Debug.WriteLine(acc.Name);
                if (acc.Name == sMailAccount)
                    bFound = true;
            }
            if (bFound)
                account = session.EmailAccounts[sMailAccount];
            else
            {
                if(this.createAccountGoogle())
                    account = session.EmailAccounts[sMailAccount];
            }
            if (account != null)
                _bIsValidAccount = true;
        }
        public sendMail()
        {
            session = new OutlookSession();
            //eMail = new EmailMessage();
            bool bFound = false;
            foreach (Account acc in session.EmailAccounts)
            {
                System.Diagnostics.Debug.WriteLine(acc.Name);
                if (acc.Name == "Google Mail")
                    bFound = true;
            }
            if (bFound)
                account = session.EmailAccounts["Google Mail"];
            else
            {
                if(this.createAccountGoogle())
                    account = session.EmailAccounts["Google Mail"];
            }
            if (account != null)
                _bIsValidAccount = true;
        }
        /// <summary>
        /// sync eMail using send and recv in foreground
        /// </summary>
        public void syncNow()
        {
            if (this.account != null)
                Microsoft.WindowsMobile.PocketOutlook.MessagingApplication.Synchronize(this.account);
        }
        /// <summary>
        /// sync eMail in outlook
        /// </summary>
        /// <param name="pHandle">handle to forground window</param>
        public void syncNow(IntPtr pHandle)
        {
            if (this.account != null)
            {
                Microsoft.WindowsMobile.PocketOutlook.MessagingApplication.Synchronize(this.account);
                SetForegroundWindow(pHandle);
            }
        }
        public bool send(string sImagePath)
        {
            if (account == null)
                return false;
            try
            {
                eMail = new EmailMessage();
                rcp = new Recipient(_to);
                eMail.To.Add(rcp);
                eMail.Subject = "Visitenkarten LogiMAT";
                eMail.BodyText = "LogiMat " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "\r\nsent from eMDI2Mail";

                attachement = new Attachment(sImagePath);
                eMail.Attachments.Add(attachement);                
                eMail.Send(account);                
                //account.Send(eMail);
                if (this._syncImmediately)
                {
                    if (this.account != null)
                        Microsoft.WindowsMobile.PocketOutlook.MessagingApplication.Synchronize(this.account);
                }
                return true;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("Exception in send(): " + ex.Message);
            }
            return false;
        }

        public void Dispose()
        {
            if (account != null)
                account.Dispose();
            if (session != null)
                session.Dispose();
        }

        public bool createAccountHotmail()
        {
            XMLConfig.Settings sett = new XMLConfig.Settings();

            return XMLConfig.DMProcessConfig.ProcessXML(sett.appPath + "hotmail.xml");
        }
        public bool createAccountGoogle(){
            XMLConfig.Settings sett= new XMLConfig.Settings();

            return XMLConfig.DMProcessConfig.ProcessXML(sett.appPath + "gmail.xml");
/*
            bool bRet = false;
            string strTemp = "";
            strTemp += "<wap-provisioningdoc>\r\n";
            strTemp += "  <characteristic type=\"EMAIL2\" recursive=\"true\">\r\n";
            strTemp += "    <characteristic type=\"{D45D5BE0-B96C-87A5-60B8-A59B69C733E4}\">\r\n";
            strTemp += "      <parm name=\"SERVICENAME\" value=\"Google Mail\" />\r\n";
            strTemp += "      <parm name=\"SERVICETYPE\" value=\"IMAP4\" />\r\n";
            strTemp += "      <parm name=\"INSERVER\" value=\"imap.googlemail.com\" />\r\n";
            strTemp += "      <parm name=\"AUTHNAME\" value=\"[email protected] /cdn-cgi/l/email-protection\" />\r\n";
            strTemp += "      <parm name=\"DOMAIN\" value=\"\" />\r\n";
            strTemp += "      <parm name=\"OUTSERVER\" value=\"smtp.googlemail.com\" />\r\n";
            strTemp += "      <parm name=\"REPLYADDR\" value=\"[email protected] /cdn-cgi/l/email-protection\" />\r\n";
            strTemp += "      <parm name=\"SMTPALTAUTHNAME\" value=\"[email protected] /cdn-cgi/l/email-protection\" />\r\n";
            strTemp += "      <parm name=\"SMTPALTDOMAIN\" value=\"\" />\r\n";
            strTemp += "      <parm name=\"NAME\" value=\"YourName 2011\" />\r\n";
            strTemp += "      <parm name=\"LINGER\" value=\"120\" />\r\n";
            strTemp += "      <parm name=\"RETRIEVE\" value=\"2048\" />\r\n";
            strTemp += "      <parm name=\"KEEPMAX\" value=\"0\" />\r\n";
            strTemp += "      <parm name=\"DWNDAY\" value=\"3\" />\r\n";
            strTemp += "      <parm name=\"FORMAT\" value=\"2\" />\r\n";
            strTemp += "      <parm name=\"AUTHREQUIRED\" value=\"1\" />\r\n";
            strTemp += "      <parm name=\"AUTHSECRET\" value=\"YourPassword\"/>\r\n";
            strTemp += "    </characteristic>\r\n";
            strTemp += "  </characteristic>\r\n";
            strTemp += "</wap-provisioningdoc>";

            return bRet;
*/
        }
    }
}

正如您所看到的,该类还能够通过给定的 XML WAP 配置文件创建电子邮件帐户。

regards

Josef

顺便说一句:该应用程序旨在使用 Intermec eMDI 技术在展会上制作一张特殊的名片照片。然后应将这些直接发送给秘书以创建这些线索。

好的,为了更简单明了: 1. 为了能够使用 POutlook,您需要对 poutlook 会话的引用。 2. 为了能够通过代码发送电子邮件,您需要指定 poutlook 必须使用的邮件帐户。 3.然后创建一个eMail对象并填写字段 4. 最后将电子邮件对象的 send 方法与现有帐户对象一起使用

更详细

创建会话对象

      OutlookSession session = new OutlookSession();

指定用于发送电子邮件的帐户。字符串必须与您定义的完全匹配 PocketOutlook 电子邮件帐户名称。如果您使用数字作为参考,您无法确定哪个 帐户已选择。

      EmailAccount account = session.EmailAccounts[sMailAccount];

检查退回的帐户。是NULL吗? 现在创建一个新的电子邮件消息(与文本消息(SMS)相反)

      EmailMessage eMail = new EmailMessage();

然后填写EmailMessage对象的字段

        Recipient rcp = new Recipient(_to);
        eMail.To.Add(rcp);
        eMail.Subject = "Visitenkarten";
        eMail.BodyText = "Enter some eMail text to send";

最后发送电子邮件:

     eMail.Send(account); 

由于 Outlook 通常会在某个时间定期在后台发送电子邮件,因此您可能想让 Outlook 立即发送邮件。如果是这样,您可以使用该代码:

     Microsoft.WindowsMobile.PocketOutlook.MessagingApplication.Synchronize(account);

这将使poulook立即同步指定帐户的电子邮件,同时也带来了outlook 窗口到前景。

这是否清晰且简单?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 中的 Windows 移动应用程序中发送邮件 的相关文章

随机推荐

  • 联合类型和额外属性

    当使用可以同时是联合类型情况的参数调用函数时 有没有办法让 TypeScript 编译器产生错误 例子 interface Name name string interface Email email string type NameOrE
  • Sails.js:如何使用水线连接多个模型?

    我有 3 个模型 大陆 国家和城市 我想加入这些模型以获得结果 大陆 js attributes continent Id type string primaryKey true continent Name type string des
  • 对象 Switch 语句的高性能 Objective C 替代方案

    我有一个函数 我想接受一个 NSString 和一个 int 参数 然后使用 switch 语句返回一个计算值 就像将 int 乘以某个常量一样 具体取决于提供的 NSString 内容 显然 switch 语句不适用于 Objective
  • 使用自定义视频编写器库编写音频的错误

    我正在尝试包装一小段方便的 C 代码 旨在使用 VFW 在 Windows 上生成视频 音频 C 库存在here http www farbrausch de 7Efg code aviwriter 描述说 使用 Windows 视频 因此
  • maven命令行如何为单个命令指向特定的settings.xml?

    是否可以指向特定的设置文件以覆盖 maven 用于单个命令的默认 settings xml 例子 mvn clean install Dparam gt pass specific settings file path as param t
  • Isabelle:向量中的最大值

    我想找到自然数向量中的最大值 然而 向量 即 vec 是与集合或列表不同的类型 我考虑了几个行不通的想法 比如调平或提升 vec 的类型或递归函数的定义 您建议采用什么解决方案来获得向量中的最大值 IMPORTS src HOL Algeb
  • 防止背景图像在更改时闪烁

    我正在使用按钮的背景图像并切换到不同的按钮 hover 当第一次鼠标悬停时发生切换时 背景颜色会短暂闪烁 我在这里将其设置为橙色 以便更明显 它与白色背景相同 或者如果我未设置背景颜色 但是 后续鼠标悬停时它不会闪烁 如何防止页面加载和第一
  • NSComparisonResult 和 NSComparator - 它们是什么?

    What is NSComparisonResult and NSComparator 我见过一种类型定义 类似这样 typedef NSComparisonResult NSComparator id obj1 id obj2 它和函数指
  • 如何在 Bootstrap 4 中的插入符下添加下拉箭头?

    我正在使用 Bootstrap 4 下拉选项 我想为左上角的下拉菜单添加一个向上箭头 在 Bootstrap 3 中 我们在按钮上有一个插入标记 因此我们可以将箭头添加到下拉菜单中 但在 Bootstrap 4 中 我们没有插入符号标记 使
  • Rails ORM 是否限制执行聚合的能力?

    我担心 Rails 是否可以处理金融应用程序所需的复杂聚合类型 特别是 ORM 是否可以有效地处理这些类型 在我正在考虑使用它的财务应用程序中 需要对以各种方式汇总的详细财务数据进行大量报告 如果没有 Rails ORM 的支持 我需要直接
  • 使 CSS 网格中的单行跨越所有列

    我怎样才能使 legend 跨越所有行 所以它会弄乱 fieldset 其样式为 3 列 CSS 网格 fieldset legend Personal Details legend fieldset fieldset legend
  • 编译器是否允许交错计算不同函数参数中的子表达式? [复制]

    这个问题在这里已经有答案了 我想知道以下情况 void f int a int b int a int x std cout lt lt func a lt lt std endl return 1 int b int x std cout
  • 如何在 Django 中测试空查询集?

    我正在 Django 中测试一个视图 该视图应该从对象中删除所有标签 为此 我使用这个断言 self assertEqual list Tag objects get for object Animal objects get pk 1 这
  • 根据 Airflow 中任务的输出字典动态生成多个任务

    我有一个任务 其中输出是一个字典 每个键中都有一个列表值 task task id gen dict def generate dict return output dict output look like this A aa bb cc
  • ASP.NET Web API,从 Flex FileReference 上传时 MIME 多部分流意外结束

    按照 ASP NET 上的教程 实现了一个用于执行异步文件上传的 Web API 控制器方法 如下所示 public Task
  • 帮助理解 Java 中的函数对象或函子

    有人可以解释什么是函子并提供一个简单的例子吗 函数对象就是这样 既是对象又是函数的东西 旁白 将函数对象称为 函子 是对该术语的严重滥用 另一种 函子 是数学中的核心概念 并且在计算机科学中具有直接作用 请参阅 Haskell 函子 该术语
  • 在 PHP 中应用差异

    我正在使用 Text Diff PEAR 包来比较短文本文档 其中 Text Diff 对象是使用每个文档中以空格分隔的单词列表创建的 我希望将差异存储在数据库中 然后在再次加载文件时应用它 有没有一种简单的方法来应用这个差异 或者我需要编
  • 应用程序根目录中“npm install”生成的许多不必要的文件

    通常 当我在应用程序目录中执行 npm install 时 会在 node modules 文件夹中生成一堆 npm 库文件 这是预期的 今天突然我开始看到许多文件在应用程序目录内部和节点模块外部生成 有人遇到过这个问题吗 如果是的话 有什
  • C++ int 操作在 mips 架构上是原子的吗

    我想知道我是否可以在不锁定 mips cpu 的情况下读取或写入共享 int 值 尤其是 Amazon 或 Danube 我的意思是 如果这样的读取或写入是原子的 其他线程不能中断它们 需要明确的是 我不想阻止线程之间的竞争 但我关心 in
  • 在 Windows 中的 Windows 移动应用程序中发送邮件

    我是 Windows Mobile 应用程序的新手 在我的项目中 我想使用发送电子邮件microsoft windowsmobile pocketoutlook 到目前为止我有以下代码 private void btnsubmit Clic