1

外部ライブラリEASendMailを使用して、gmail を SMTP サーバーとして使用して電子メールを送信しています。

エラーの原因となっている行

oSmtp->LicenseCode = _T("TryIt");

外部ライブラリをインストールするためのリンク。

#include "stdafx.h"
#include <iostream>
#include "easendmailobj.tlh"
#include <string>

using namespace EASendMailObjLib;
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

    string Lrecipient_email = "foobar@hotmail.com";

    ::CoInitialize( NULL );

    IMailPtr oSmtp = NULL;
    oSmtp.CreateInstance( "EASendMailObj.Mail");
    oSmtp->LicenseCode = _T("TryIt");  //error is here

    // Set your gmail email address
    oSmtp->FromAddr = _T(" mygmailacc@gmail.com");

    // Add recipient email address
    oSmtp->AddRecipientEx( _T(recipient_email.c_str()), 0);

    // Set email subject
    oSmtp->Subject = _T("Payment of Desposit Required");

    // Set email body
    oSmtp->BodyText = _T("Dear Customer , Please pay your deposit now !!!");

    // Gmail SMTP server address
    oSmtp->ServerAddr = _T("smtp.gmail.com");

    // If you want to use direct SSL 465 port, 
    // Please add this line, otherwise TLS will be used.
    // oSmtp->ServerPort = 465;

    // detect SSL/TLS automatically
    oSmtp->SSL_init();

    // Gmail user authentication should use your 
    // Gmail email address as the user name. 
    // For example: your email is "gmailid@gmail.com", then the user should be "gmailid@gmail.com"
    oSmtp->UserName = _T("username");
    oSmtp->Password = _T("password");

    _tprintf(_T("Start to send email via gmail account ...\r\n" ));

    if( oSmtp->SendMail() == 0 )
    {
        _tprintf( _T("email was sent successfully!\r\n"));
    }
    else
    {
        _tprintf( _T("failed to send email with the following error: %s\r\n"),
            (const TCHAR*)oSmtp->GetLastErrDescription());
    }

    if( oSmtp != NULL )
        oSmtp.Release();

    return 0;
}

この次のエラーが発生する理由がわかりません:

Unhandled exception at 0x7558c41f in SendEmail.exe: Microsoft C++ exception: _com_error at memory location 0x0040f4ac..

MS Studio デバッガーは、これをファイルのエラーの原因として示します: easendmailobj.tli

エラー 1

 Interface* operator->() const 
    { 
        if (m_pInterface == NULL) 
        {
            _com_issue_error(E_POINTER);
        }

        return m_pInterface; 
    }

エラー 2

inline void IMail::PutLicenseCode ( _bstr_t pVal ) {
    HRESULT _hr = put_LicenseCode(pVal);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
}
4

3 に答える 3

0
IMailPtr oSmtp = NULL;
oSmtp.CreateInstance( "EASendMailObj.Mail");

これが問題かもしれません。oSmtpまず、アクセスしようとしているよりも、 に NULL を割り当てています。確認してくださいoSmtp。おそらく NULL です。

于 2015-08-28T07:07:15.323 に答える