我正在使用VS2008 & C + +我试图创建一个命令行程序发送电子邮件。
我看了一下,发现了一些示例程序,但没有人会为我编译。
有没有人有我的例子程序? 感谢命令行C++程序发送电子邮件
回答
此代码编译&运行我 - 找出正确的标题等。还有需要命令行操作,并使用MAPI库已过时,但后你想要什么免费的?从codeproject.com
#include "windows.h"
#include "tchar.h"
#include "mapi.h"
#include "assert.h"
#define ASSERT assert
#define VERIFY assert
BOOL SendMail(CHAR *lpszFrom, CHAR *lpszTo, CHAR *lpszSubject, CHAR *lpszMessage)
{
BOOL bSent = FALSE;
HINSTANCE hMAPI = ::LoadLibrary(_T("mapi32.dll"));
if(0==hMAPI) return bSent;
typedef ULONG (FAR PASCAL *PFN_MAPILogon)(ULONG,LPTSTR,LPTSTR,FLAGS,ULONG,LPLHANDLE);
typedef ULONG (FAR PASCAL *PFN_MAPISendMail)(LHANDLE,ULONG,lpMapiMessage,FLAGS,ULONG);
typedef ULONG (FAR PASCAL *PFN_MAPILogoff)(LHANDLE,ULONG,FLAGS,ULONG);
PFN_MAPILogon MAPILogon = (PFN_MAPILogon)::GetProcAddress(hMAPI,"MAPILogon");
PFN_MAPISendMail MAPISendMail = (PFN_MAPISendMail)::GetProcAddress(hMAPI,"MAPISendMail");
PFN_MAPILogoff MAPILogoff = (PFN_MAPILogoff)::GetProcAddress(hMAPI,"MAPILogoff");
const BOOL bFunctionsLoaded = (0!=MAPILogon)&&(0!=MAPISendMail)&&(0!=MAPILogoff);
ASSERT(bFunctionsLoaded);
if(bFunctionsLoaded)
{
LHANDLE session = 0;
VERIFY(SUCCESS_SUCCESS==MAPILogon(0,0,0,MAPI_NEW_SESSION,0,&session));
ASSERT(0!=session);
MapiRecipDesc recipient;
::ZeroMemory(&recipient,sizeof(recipient));
recipient.ulRecipClass = MAPI_TO;
recipient.lpszName = lpszTo;
MapiMessage message;
::ZeroMemory(&message,sizeof(message));
message.lpszSubject = lpszSubject;
message.lpszNoteText = lpszMessage;
message.nRecipCount = 1;
message.lpRecips = &recipient;
bSent = SUCCESS_SUCCESS == MAPISendMail(session,0,&message,0,0);
VERIFY(SUCCESS_SUCCESS==MAPILogoff(session,0,0,0));
}
::FreeLibrary(hMAPI);
return bSent;
}
int _tmain(int argc, _TCHAR* argv[])
{
SendMail("[email protected]_daddy.com","[email protected]","Test subject","New Message");
return 0;
}
这工作!不过,它确实提醒我允许程序发送电子邮件。我通过安装来解决这个问题点击是http://www.contextmagic.com/express-clickyes/由于我的程序将在内部PC上运行,所以安装此软件不会有问题。 – Rossini 2010-10-11 12:01:27
是的 - 这是因为这是使用MAPI服务器在PC上发送邮件。有一些不使用MAPI的替代解决方案,所以您可以稍后查看 - – Jeff 2010-10-11 14:43:05
@Jeff你知道为什么我在ASSERT(bFunctionsLoaded)行中得到“assert is not defined”吗? ? 谢谢 – CMS 2014-02-18 09:33:34
感谢您的链接,但我有点希望一个简单的命令行程序,我可以很容易理解,所以我可以在我的程序中使用相同的逻辑。 – Rossini 2010-10-07 12:23:19
原始代码,因为你的服务器是兑换,你最方便的方法来编写程序的电子邮件将使用C#和System.Net.Mail作为证明here发送。这里是C++/CLI代码:
static void CreateTestMessage2(String^ server)
{
String^ to = L"[email protected]";
String^ from = L"[email protected]";
MailMessage^ message = gcnew MailMessage(from,to);
message->Subject = L"Using the new SMTP client.";
message->Body = L"Using this new feature, you can send an e-mail message from an application very easily.";
SmtpClient^ client = gcnew SmtpClient(server);
// Credentials are necessary if the server requires the client
// to authenticate before it will send e-mail on the client's behalf.
client->UseDefaultCredentials = true;
client->Send(message);
client->~SmtpClient();
}
如果你真的想用本地C++,那么你被卡住的原生API中的一个描述here(也就是不通过C++/CLI访问System.Net.Mail。) 。
我同意c#会更容易,但是我需要整合发送电子邮件与现有的C++命令行程序。 – Rossini 2010-10-11 12:01:09
- 1. Bash命令发送电子邮件
- 2. 发送电子邮件C#
- 3. 从VBA电子邮件程序发送HTML电子邮件
- 4. 如何使用linux命令行发送HTML电子邮件
- 5. 如何从命令行发送电子邮件?
- 6. 从linux命令行发送电子邮件的不同方式
- 7. 如何在Windows上从命令行发送电子邮件
- 8. 通过命令行发送电子邮件 - 不包括身体
- 9. Outlook Express - 从命令行发送电子邮件
- 10. 撰写并通过命令行雷鸟发送电子邮件
- 11. Java电子邮件发送API电子邮件没有发送..挂断程序
- 12. Vb.net程序发送电子邮件?
- 13. 发送来自Linux中的C/C++程序的电子邮件
- 14. 使用邮件命令发送电子邮件时指定发件人
- 15. PHP发送电子邮件多次发送电子邮件
- 16. Freshdesk电子邮件命令
- 17. 通过谷歌应用程序发送电子邮件在C#
- 18. 通过C#winform应用程序发送电子邮件
- 19. 从windows应用程序发送电子邮件(C++)
- 20. 如何通过C++程序发送电子邮件?
- 21. 如何从我的C#应用程序发送电子邮件?
- 22. 的cron symfony的命令发送电子邮件
- 23. 试图在laravel发送使用命令电子邮件5.4
- 24. 如何从DOS批处理命令发送电子邮件?
- 25. 如何从命令提示符发送电子邮件?
- 26. 从C++发送电子邮件
- 27. 发送电子邮件C#(cPanel主机)
- 28. 发送电子邮件asp.net c#
- 29. 无法发送电子邮件与c#
- 30. 用C发送电子邮件#
你想发送什么样的电子邮件? IMAP?本地Exchange? POP3? – 2010-10-06 13:06:54
我试图在邮件正文中发送简单的文本消息,我不想发送附件或类似的东西。我在一个交换电子邮件服务器的局域网上,所以我会用它来发送电子邮件。 – Rossini 2010-10-07 12:16:52
@Steve Townsend:没有“种类”的电子邮件。电子邮件几乎总是通过SMTP发送。您列出的协议是*接收*电子邮件的方式。 – casablanca 2010-10-09 18:36:14