كيف يمكن لبرنامج Delphi إرسال بريد إلكتروني مع مرفقات عبر عميل البريد الإلكتروني الافتراضي؟

StackOverflow https://stackoverflow.com/questions/1962765

سؤال

ضمن برنامجي ، أقوم بتأليف بريد إلكتروني لإرساله باستخدام برنامج عميل البريد الإلكتروني الافتراضي المثبت على جهاز المستخدم.

لقد قمت بتأليف عنوان Mailto ، والموضوع ، والجسم متعدد الأملس ، ولدي عدة مرفقات ليتم تضمينها.

لقد حصلت على هذا العمل تقريبًا باستخدام Mailto و Shellexecute على النحو التالي:

  Message := 'mailto:someone@somewhere.com'
    + '?subject=This is the subjectBehold Error Report'
    + '&body=This is line 1' + '%0D%0A'
    + 'This is line 2' + '%0D%0A'
    + 'This is line 3'
    + '&Attach=c:\file1.txt';
  RetVal := ShellExecute(Handle, 'open', PChar(Message), nil, nil, SW_SHOWNORMAL);
  if RetVal <= 32 then
    MessageDlg('Cannot find program to send e-mail.', mtWarning, [mbOK], 0);

باستخدام Delphi 2009 على جهاز Windows Vista ، سيفتح هذا نافذة Microsoft Mail "Create Mail" ، مع ملء الموضوع والجسم بشكل صحيح. ومع ذلك لا يتم إرفاق الملف.

عندما بحثت عن هذا ، لاحظت بعض التعليقات التي تفيد بأن هذه التقنية لا تعمل مع جميع عملاء البريد. ومع ذلك ، فإن معظم التعليقات قديمة إلى حد ما ، حيث أدرك أن هذه تقنية قديمة للغاية.

ثم وجدت ذلك قال زاركو غاجيك هذا "هذا النهج على ما يرام ، لكنك غير قادر على إرسال مرفقات بهذه الطريقة".

لقد رأيت أيضًا Windows Simple Mail API (MAPI) ، لكن Zarko يقول إن هذا يعمل فقط إذا كان لدى المستخدم النهائي برنامج بريد إلكتروني متوافق مع MAPI. هناك تقنيات موثقة جيدًا على استخدام MAPI مع Delphi (على سبيل المثال إرسال بريد إلكتروني باستخدام MAPI) ، لكن لديهم جميعًا إخلاء المسئولية بأن MAPI لم يتم تثبيته دائمًا مع Windows.

علاوة على ذلك ، أريد حقًا أن تظهر الرسالة أولاً في برنامج البريد الإلكتروني الافتراضي للمستخدم ، لذلك سيكون لديهم كجزء من سجلات البريد الإلكتروني الخاصة بهم ويمكنهم تحريرها وتحديد ما إذا كانوا يرغبون في إرساله. لست متأكدًا من كيفية عمل MAPI وإذا كان سيفعل ذلك.

لذا فإن متطلباتي هي:

  1. لإحضار البريد الإلكتروني في برنامج بريد المستخدم.

  2. للسماح بواحد أو أكثر.

  3. للعمل مع (نأمل) جميع عملاء البريد الإلكتروني على أي جهاز Windows من XP UP (أي XP أو Vista أو 7).

هل هناك مثل هذا الحيوان؟ أو ربما يعرف أحدهم كيفية الحصول على مرفقات للعمل مع تقنية Mailto/Shellexecute؟

ماذا يفعل معظم الناس؟


يحرر:

كانت هناك بعض الإجابات مع حلول MAPI وحتى حل Indy.

المشكلة التي أواجهها معهم هي أنها لا تستخدم بالضرورة عميل البريد الافتراضي. على جهاز Vista الخاص بي ، على سبيل المثال ، قمت بإعداد Windows Mail كعميل افتراضي. عندما أقوم بإرسال MAPI ، فإنه لا يعرض بريد Windows ، لكنه يظهر ويقوم بإعداد البريد الإلكتروني في Outlook بدلاً من ذلك. لا أريد ذلك.

اشتكى اثنان من مستخدمي من برنامجي:

فشل روتين التصحيح الخاص بك في إرسال الملف ، لأنه يحاول بدء تشغيل Windows Mail لسبب معروف لذاته بدلاً من استخدام عميل البريد الافتراضي (في حالتي Thunderbird)

حاولت ملء تقرير الاستثناء ولكن استسلمت عندما طلب هذا الخادم ، هذا الخادم! بعد ذلك ، انزعجت حقًا لأنها أطلقت Outlook - لم أستخدمها أبدًا أو أرغب في استخدامها.

لا أحتاج إلى رمز لـ MAPI أو Indy. إنها متاحة بسهولة. ولكن إذا اقترحت MAPI أو Indy ، فإن ما أحتاجه حقًا هو وسيلة للعثور على العميل الافتراضي والتأكد من أنه هو الذي يتم تمرير البريد الإلكتروني ليتم إرساله.

أيضًا ، أحتاج إلى معرفة ما إذا كان Mapi عالميًا الآن. قبل 5 سنوات ، لم يضمن العمل على جميع الآلات لأنه لم يتم تثبيته كجزء من نظام التشغيل. هل هذا لا يزال صحيحًا ، أم أن MAPI يأتي الآن مع Windows XP و Vista و 7 بشكل افتراضي؟

نفس الأسئلة تذهب إلى إندي أو أي حلول أخرى مقترحة. هل يمكن أن يعمل مع العميل الافتراضي وهل سيعمل على جميع أجهزة Windows XP تقريبًا والآلات اللاحقة؟

السبب في أن حل "Mailto" لطيف للغاية ، هو أن على جميع الآلات دعمه لغرض التعامل مع بيان Mailto HTML الموجود على صفحات الويب. الآن إذا كان بإمكاني استخدامه لإضافة مرفقات ...


تم العثور على الحل المحتمل: أشار Mjustin إلى بديل يستخدم أمر SendTo لنظام التشغيل. على الأرجح هو الطريق للذهاب.

لم يقتصر Mailto على 256 حرفًا مثل HTML Mailto ، لكنني دمرت لمعرفة أنه انتهى الأمر إلى 2048 شخصيات. لحسن الحظ بعد بضع ساعات ، أعطى Mjustin إجابته.

إذا كان تنفيذ ذلك على ما يرام ، فإن إجابته ستفعل ذلك من أجلي. إذا لم يكن كذلك ، سأضيف تعليقاتي هنا.


لا. كما اتضح ، لن يفتح حل sendto دائمًا برنامج البريد الإلكتروني الافتراضي. على الجهاز الخاص بي ، يفتح Outlook عندما يكون البريد الإلكتروني الافتراضي هو Windows Mail. مؤسف جدا. اضطررت إلى العودة إلى طريقة Mailto ، على الرغم من الحد الأقصى لحرف 2048.

ومع ذلك ، وجدت في المقال: مستلم Sendto Mail الذي - التي:

في هذه المرحلة ، يمكنك استبدال :: shellexecute بعناية جيدة :: winexec call ، باستخدام سطر الأوامر mailto الفعلي المعلن في السجل واستهداف عميل البريد الإلكتروني الحالي (على سبيل المثال ، "٪ programfiles ٪ Outlook express msimn .exe " /mailurl: ٪ 1). ولكن بعد ذلك فإن القيد هو 32 كيلو بايت. كخلاصة ، لا توجد طريقة لإرسال رسائل بريد إلكتروني أكبر من 32 كيلو بايت باستخدام بروتوكول MailTO.

ولكن بعد ذلك ، يجب أن أحدد من هو عميل البريد في كل حالة. أتوقع أن يؤدي ذلك إلى مزيد من المضاعفات.

الشيء الآخر الذي اكتشفته هو أن Mailto يسمح بإعداد "إلى" و "CC" و "BCC" و "الموضوع" و "الجسم" ولكن لا توجد مرفقات. في حين أن Sendto يسمح فقط بالمرفقات ثم يقوم بإعداد بريد إلكتروني افتراضي مع رسالة افتراضية ولا توجد طريقة لتعيين مختلف الحقول والجسم.

هل كانت مفيدة؟

المحلول 3

يبدو أن Mailto في Shellexecute غير قادر على إرسال المرفقات.

لدى Mapi و Indy السمة المؤسفة لعدم اختيار عميل البريد الإلكتروني الخاص بالمستخدم.

لذا فإن الاحتمال الآخر هو الاستمرار في استخدام Shellexecute ، ولكن العثور على طريقة أخرى للحصول على المرفقات في عميل البريد الإلكتروني.

ما قررت القيام به هو في مربع الحوار الذي ينشئ البريد الإلكتروني ، أصبح لدي الآن fileListbox يسرد الملفات التي قد يرغب المستخدم في إرفاقها بالبريد الإلكتروني. عندما تنبثق البريد الإلكتروني ، يمكنهم ببساطة سحبها وإسقاطها إلى البريد الإلكتروني.

في حالتي ، هذا في الواقع حل جيد ، لأن هذا يتيح للمستخدمين تحديد الملفات التي يريدون تضمينها. ستتطلب الطريقة الأخرى (إرفاقها تلقائيًا) أن يحذفوا الطريقة التي لا يريدون تضمينها. (أي وجود خيار "إضافة شريط أدوات Google" الذي تم فحصه بالفعل لك ليس جيدًا)

في الوقت الحالي ، سيعمل هذا الحل.

شكرا لجميع الذين ساهموا في الإجابات وساعدوني في رؤية طريقي من خلال هذا (الكل +1).

نصائح أخرى

لا تعقد ، فقط استخدم JCL رمز MAPI. إنه في الوحدة jclmapi.pas. أعتقد أن لديهم أيضًا مثال على ذلك. الكود قوي للغاية ويمكنك فعل أي شيء يسمح به MAPI.

مع Shellexecute ، لا يمكنك إرسال المرفق وتقتصر أيضًا على 255 حرفًا لجسم البريد.

طالما يذهب MAPI ، مع Windows القديمة ، يتم تثبيتها دائمًا (2000 ، XP). إنه يأتي مع Outlook Express و Outlook Express دائمًا تقريبًا. مع Windows الأحدث (Vista ، 7) لا يوجد Outlook Express وبالتالي لا يوجد MAPI. ولكن يتم تثبيت MAPI تلقائيًا إذا قمت بتثبيت MS Outlook أو Mozzila Thunderbird. لذلك أنت آمن جدا. هذا هو MAPI الأساسي وليس موسع مسيح. لكنه يغطي كل ما تحتاجه.

يمكنك أيضًا التحقق من الكود الخاص بك (JCL) إذا تم تثبيت MAPI وتصرف بشكل كبير. لقد فعلت شيئًا مشابهًا منذ وقت ليس ببعيد وهو يعمل بشكل جيد. لم أجد عميلًا شهيرًا لنظام Windows Mail لا يدعم MAPI البسيط. هذا غلاف بسيط حول رمز JCL وعينات الاستخدام:

unit MAPI.SendMail;

interface

uses
  SysUtils, Classes, JclMapi;

type
  TPrerequisites = class
  public
    function IsMapiAvailable: Boolean;
    function IsClientAvailable: Boolean;
  end;

  TMAPISendMail = class
  private
    FAJclEmail: TJclEmail;
    FShowDialog: Boolean;
    FResolveNames: Boolean;
    FPrerequisites: TPrerequisites;
    // proxy property getters
    function GetMailBody: string;
    function GetHTMLBody: Boolean;
    function GetMailSubject: string;
    // proxy property setters
    procedure SetMailBody(const Value: string);
    procedure SetHTMLBody(const Value: Boolean);
    procedure SetMailSubject(const Value: string);
  protected
    function DoSendMail: Boolean; virtual;
  public
    constructor Create;
    destructor Destroy; override;
    // properties of the wrapper class
    property MailBody: string read GetMailBody write SetMailBody;
    property HTMLBody: Boolean read GetHTMLBody write SetHTMLBody;
    property ShowDialog: Boolean read FShowDialog write FShowDialog;
    property MailSubject: string read GetMailSubject write SetMailSubject;
    property ResolveNames: Boolean read FResolveNames write FResolveNames;
    property Prerequisites: TPrerequisites read FPrerequisites;
    // procedure and functions of the wrapper class
    procedure AddRecipient(const Address: string; const Name: string = '');
    procedure AddAttachment(const FileName: string);
    function SendMail: Boolean;
  end;

implementation

{ TMAPISendMail }

constructor TMAPISendMail.Create;
begin
  FPrerequisites := TPrerequisites.Create;
  FAJclEmail := TJclEmail.Create;
  FShowDialog := True;
end;

destructor TMAPISendMail.Destroy;
begin
  FreeAndNil(FAJclEmail);
  FreeAndNil(FPrerequisites);

  inherited;
end;

function TMAPISendMail.DoSendMail: Boolean;
begin
  Result := FAJclEmail.Send(FShowDialog);
end;

function TMAPISendMail.SendMail: Boolean;
begin
  Result := DoSendMail;
end;

function TMAPISendMail.GetMailBody: string;
begin
  Result := FAJclEmail.Body;
end;

procedure TMAPISendMail.SetMailBody(const Value: string);
begin
  FAJclEmail.Body := Value;
end;

procedure TMAPISendMail.AddAttachment(const FileName: string);
begin
  FAJclEmail.Attachments.Add(FileName);
end;

procedure TMAPISendMail.AddRecipient(const Address, Name: string);
var
  LocalName: string;
  LocalAddress: string;
begin
  LocalAddress := Address;
  LocalName := Name;

  if FResolveNames then
    if not FAJclEmail.ResolveName(LocalName, LocalAddress) then
      raise Exception.Create('Could not resolve Recipient name and address!');

  FAJclEmail.Recipients.Add(LocalAddress, LocalName);
end;

function TMAPISendMail.GetMailSubject: string;
begin
  Result := FAJclEmail.Subject;
end;

procedure TMAPISendMail.SetMailSubject(const Value: string);
begin
  FAJclEmail.Subject := Value;
end;

function TMAPISendMail.GetHTMLBody: Boolean;
begin
  Result := FAJclEmail.HtmlBody;
end;

procedure TMAPISendMail.SetHTMLBody(const Value: Boolean);
begin
  FAJclEmail.HtmlBody := Value;
end;

{ TPrerequisites }

function TPrerequisites.IsClientAvailable: Boolean;
var
  SimpleMAPI: TJclSimpleMapi;
begin
  SimpleMAPI := TJclSimpleMapi.Create;
  try
    Result := SimpleMAPI.AnyClientInstalled;
  finally
    SimpleMAPI.Free;
  end;
end;

function TPrerequisites.IsMapiAvailable: Boolean;
var
  SimpleMAPI: TJclSimpleMapi;
begin
  SimpleMAPI := TJclSimpleMapi.Create;
  try
    Result := SimpleMAPI.SimpleMapiInstalled;
  finally
    SimpleMAPI.Free;
  end;
end;

end.

استخدام العينة:

unit f_Main;

interface

uses
  Windows, SysUtils, Classes, Controls, Forms, Graphics, StdCtrls, XPMan,

  // project units
  JclMapi, MAPI.SendMail, Dialogs;

type
  TfMain = class(TForm)
    XPManifest: TXPManifest;
    gbMailProperties: TGroupBox;
    eMailSubject: TEdit;
    stMailSubject: TStaticText;
    stMailBody: TStaticText;
    mmMailBody: TMemo;
    cbHTMLBody: TCheckBox;
    gbAttachments: TGroupBox;
    gbRecipients: TGroupBox;
    btnSendMail: TButton;
    lbRecipients: TListBox;
    eRecipAddress: TEdit;
    StaticText1: TStaticText;
    eRecipName: TEdit;
    btnAddRecipient: TButton;
    stRecipName: TStaticText;
    OpenDialog: TOpenDialog;
    lbAttachments: TListBox;
    btnAddAttachment: TButton;
    stMAPILabel: TStaticText;
    stClientLabel: TStaticText;
    stMAPIValue: TStaticText;
    stClientValue: TStaticText;
    procedure btnSendMailClick(Sender: TObject);
    procedure btnAddRecipientClick(Sender: TObject);
    procedure btnAddAttachmentClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fMain: TfMain;

implementation

{$R *.dfm}

procedure TfMain.btnSendMailClick(Sender: TObject);
var
  I: Integer;
  Name: string;
  Address: string;
  ItemStr: string;
  Pos1, Pos2: Integer;
  MAPISendMail: TMAPISendMail;
begin
  MAPISendMail := TMAPISendMail.Create;
  try
    for I := 0 to lbRecipients.Items.Count - 1 do
    begin
      ItemStr := lbRecipients.Items[I];
      Pos1 := Pos('[', ItemStr);
      Pos2 := Pos(']', ItemStr);

      Name := Trim(Copy(ItemStr, Pos1 + 1, Pos2 - Pos1 - 1));
      Address := Trim(Copy(ItemStr, 1, Pos1 - 1));
      MAPISendMail.AddRecipient(Address, Name);
    end;

    for I := 0 to lbAttachments.Items.Count - 1 do
      MAPISendMail.AddAttachment(lbAttachments.Items[I]);

    MAPISendMail.MailSubject := eMailSubject.Text;
    MAPISendMail.HTMLBody := cbHTMLBody.Checked;
    MAPISendMail.MailBody := mmMailBody.Text;
    MAPISendMail.SendMail;
  finally
    MAPISendMail.Free;
  end;
end;

procedure TfMain.btnAddRecipientClick(Sender: TObject);
begin
  lbRecipients.Items.Add(Format('%s [%s]', [eRecipAddress.Text,
                                            eRecipName.Text]));
end;

procedure TfMain.btnAddAttachmentClick(Sender: TObject);
begin
  if OpenDialog.Execute then
    lbAttachments.Items.Add(OpenDialog.FileName);
end;

procedure TfMain.FormCreate(Sender: TObject);
var
  ValidHost: Boolean;
  MAPISendMail: TMAPISendMail;
begin
  MAPISendMail := TMAPISendMail.Create;
  try
    ValidHost := True;

    if MAPISendMail.Prerequisites.IsMapiAvailable then
    begin
      stMAPIValue.Caption := 'Available';
      stMAPIValue.Font.Color := clGreen;
    end
    else
    begin
      stMAPIValue.Caption := 'Unavailable';
      stMAPIValue.Font.Color := clRed;
      ValidHost := False;
    end;

    if MAPISendMail.Prerequisites.IsClientAvailable then
    begin
      stClientValue.Caption := 'Available';
      stClientValue.Font.Color := clGreen;
    end
    else
    begin
      stClientValue.Caption := 'Unavailable';
      stClientValue.Font.Color := clRed;
      ValidHost := False;
    end;

    btnSendMail.Enabled := ValidHost;
  finally
    MAPISendMail.Free;
  end;
end;

end.

أستخدم طريقتين لإرسال بريد MAPI ، اعتمادًا على ما إذا كانت هناك حاجة إلى وجود حاجة. للحالة البسيطة بدون أي مرفق ، أستخدم ما يلي:

function SendShellEmail( ARecipientEmail, ASubject, ABody : string ) : boolean;
// Send an email to this recipient with a subject and a body
var
  iResult : integer;
  S       : string;
begin

 If Trim(ARecipientEmail) = '' then
   ARecipientEmail := 'mail';
 S := 'mailto:' + ARecipientEmail;

 S := S + '?subject=' + ASubject;

 If Trim(ABody) <> '' then
  S := S + '&body=' + ABody;

 iResult := ShellExecute( Application.Handle,'open', PChar(S), nil, nil, SW_SHOWNORMAL);
 Result := iResult > 0;
end;

يستخدم هذا طريقة تنفيذ قذيفة بسيطة ، لذلك يجب ألا تواجه أي مشاكل حقيقية بخلاف التنبيهات الأكثر حداثة للحصول على المستخدم لتأكيد أنه على ما يرام مع برنامجك لإرسال بريد إلكتروني.

بالنسبة إلى attatchments ، أستخدم الكود التالي المأخوذ في الأصل من مجلة Delphi by Brian Long. من الممكن أيضًا إرسال بريد إلكتروني دون استخدام عميل MAPI ولكن باستخدام خادم SMTP الذي تم ترشيحه ولكن أعتقد أنك لا تريد ذلك صراحة. يمكنني تقديم رمز لهذا إذا قمت بذلك.

uses
  SysUtils,
  Windows,
  Dialogs,
  Forms,
  MAPI;

procedure ArtMAPISendMail(
            const Subject, MessageText, MailFromName, MailFromAddress,
                  MailToName, MailToAddress: String;
            const AttachmentFileNames: array of String);
//Originally by Brian Long: The Delphi Magazine issue 60 - Delphi And Email
var
  MAPIError: DWord;
  MapiMessage: TMapiMessage;
  Originator, Recipient: TMapiRecipDesc;
  Files, FilesTmp: PMapiFileDesc;
  FilesCount: Integer;
begin
   FillChar(MapiMessage, Sizeof(TMapiMessage), 0);

   MapiMessage.lpszSubject := PAnsiChar(AnsiString(Subject));
   MapiMessage.lpszNoteText := PAnsiChar(AnsiString(MessageText));

   FillChar(Originator, Sizeof(TMapiRecipDesc), 0);

   Originator.lpszName := PAnsiChar(AnsiString(MailFromName));
   Originator.lpszAddress := PAnsiChar(AnsiString(MailFromAddress));
//   MapiMessage.lpOriginator := @Originator;
   MapiMessage.lpOriginator := nil;


   MapiMessage.nRecipCount := 1;
   FillChar(Recipient, Sizeof(TMapiRecipDesc), 0);
   Recipient.ulRecipClass := MAPI_TO;
   Recipient.lpszName := PAnsiChar(AnsiString(MailToName));
   Recipient.lpszAddress := PAnsiChar(AnsiString(MailToAddress));
   MapiMessage.lpRecips := @Recipient;

   MapiMessage.nFileCount := High(AttachmentFileNames) - Low(AttachmentFileNames) + 1;
   Files := AllocMem(SizeOf(TMapiFileDesc) * MapiMessage.nFileCount);
   MapiMessage.lpFiles := Files;
   FilesTmp := Files;
   for FilesCount := Low(AttachmentFileNames) to High(AttachmentFileNames) do
   begin
     FilesTmp.nPosition := $FFFFFFFF;
     FilesTmp.lpszPathName := PAnsiChar(AnsiString(AttachmentFileNames[FilesCount]));
     Inc(FilesTmp)
   end;

   try
     MAPIError := MapiSendMail(
       0,
       Application.MainForm.Handle,
       MapiMessage,
       MAPI_LOGON_UI {or MAPI_NEW_SESSION},
       0);
   finally
     FreeMem(Files)
   end;

   case MAPIError of
     MAPI_E_AMBIGUOUS_RECIPIENT:
      Showmessage('A recipient matched more than one of the recipient descriptor structures and MAPI_DIALOG was not set. No message was sent.');
     MAPI_E_ATTACHMENT_NOT_FOUND:
      Showmessage('The specified attachment was not found; no message was sent.');
     MAPI_E_ATTACHMENT_OPEN_FAILURE:
      Showmessage('The specified attachment could not be opened; no message was sent.');
     MAPI_E_BAD_RECIPTYPE:
      Showmessage('The type of a recipient was not MAPI_TO, MAPI_CC, or MAPI_BCC. No message was sent.');
     MAPI_E_FAILURE:
      Showmessage('One or more unspecified errors occurred; no message was sent.');
     MAPI_E_INSUFFICIENT_MEMORY:
      Showmessage('There was insufficient memory to proceed. No message was sent.');
     MAPI_E_LOGIN_FAILURE:
      Showmessage('There was no default logon, and the user failed to log on successfully when the logon dialog box was displayed. No message was sent.');
     MAPI_E_TEXT_TOO_LARGE:
      Showmessage('The text in the message was too large to sent; the message was not sent.');
     MAPI_E_TOO_MANY_FILES:
      Showmessage('There were too many file attachments; no message was sent.');
     MAPI_E_TOO_MANY_RECIPIENTS:
      Showmessage('There were too many recipients; no message was sent.');
     MAPI_E_UNKNOWN_RECIPIENT:
       Showmessage('A recipient did not appear in the address list; no message was sent.');
     MAPI_E_USER_ABORT:
       Showmessage('The user canceled the process; no message was sent.');
     SUCCESS_SUCCESS:
       Showmessage('MAPISendMail successfully sent the message.');
   else
     Showmessage('MAPISendMail failed with an unknown error code.');
   end;
end;

هذه المقالة يوضح كيف يمكن لـ Delphi محاكاة الأمر "Send to ..." SHELL CONTEXT MENU وفتح عميل البريد الافتراضي مع المرفقات برمجيًا.

لا يحتاج هذا الحل إلى MAPI ويعمل مع عميل البريد الافتراضي ، ولكنه غير مكتمل ، لأن متلقي الرسائل والجسم والموضوع لن يتم ملؤها تلقائيًا. (يمكن نسخ جسم الرسالة باستخدام الحافظة).

فيما يلي ملخص حول كل إعدادات البريد الإلكتروني هذه وماذا يفعلون:
http://thesunstroke.blogspot.de/2017/03/how-to-configure-eurekalog-to-send-bugs.html

enter image description here

لذلك ، ابتعد عن شل (Mailto).
MAPI هي أيضًا فكرة سيئة لأنها تعمل فقط مع عملاء MS Email.
لقد قمت بتعيين MAPI البسيط افتراضيًا ، لكنني نادراً ما أتلقى رسائل بريد إلكتروني تم إرسالها بواسطة هذه القناة. يتم استلام معظم رسائل البريد الإلكتروني عبر SMTP Server.

تحذير كبير !!!!!!!!!
لقد رأيت أن عدد الإنذارات الإيجابية الخاطئة من الماسحات الضوئية المضادة للفيروسات أعلى بكثير عند تنشيط Eurekalog. لذلك ، استخدم Eurekalog فقط عند الضرورة للغاية.
وأيضًا ، تتغذى يوريكا نفسها مع الأخطاء (فقط انظر إلى تاريخ الإصدار وشاهد أنه لكل ميزة جديدة (أو حتى تغيير) ، فإنها تصلح لاحقًا بعض الأخطاء! لذا ، إذا كنت تتتبع الأخطاء ، لاحظ أن Eurekalog نفسها قد يقدم القليل في exe الخاص بك!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top