Dynamics AX 4 issue with x++ email attachment - microsoft-dynamics

I want to send emails with attachment but I'm using AX V4 which is a 32 bits version and my office version is 64 bits so I can't use integrated email attachment with reportSendMail() method of Info class, I'm using the following code with sysemailbatch and sysinetMail classes:
sysemailbatch.parmAttachmentfileName(filename); //filename with path in UNC
SysInetMail::sendEMail('01', 'fr', ToAddress, mappings, FromAddress, '\\\\UNC_path\MyAttachment.csv');
Both are working, I'm receiving the mail but no attachment, no error message
I also tried email queue with sysemailTable methods, same thing, I receive mail without attachment
I'm using AX V4 SP1 on TSE servers in W2016. I allowed attachments from a specific path in Administration/Setup/email parameters
Any Ideas ?

I wrote this post 8 years ago for 2009, but I think it still applies. I think I recall the Outlook piece being too problematic (server-side, client-side, 32-bit, 64-bit, mail profiles, etc) that I just bypassed it and made this post below.
And for years after I've been at various customers and I find this same code and laugh a little, so others bypassed it too. See if you can use it in AX 4.0 or if you can adapt it.
https://www.alexondax.com/2012/01/how-to-send-emails-from-ax-without.html
Then you can use the reportSendMail() method and your users can too.

Related

chilkat SetSslCertRequirement server validation

Im using activex version 9.5.0.79 with ftps on port 990.
If I use following code snippet (server, logon etc is already set):-
loftp.authTls=0
loftp.authssl=0
loftp.ssl=1
loftp.RequireSSLVertVerify=1
loftp.SetSllClientCert(loClientCert)
lnSuccess=SetSslCertRequirement("ServerCN", "test.test.com")
lnSuccess=loftp.connect()
It seems to work lnsuccess=1 for the connect even if the server's SubjectCN is "fred.fred.com"
I can of course get the server certificate as per your example
https://www.example-code.com/foxpro/ftp_verifyServerCert.asp
and check it manually but wondering why the requirement wasn't honoured?
Thanks Rob,
This new build fixes the problem:
32-bit: https://chilkatdownload.com/prerelease/chilkatax-9.5.0-win32-1604.zip
This will be noted in the v9.5.0.80 release notes (and v9.5.0.80 is due out before the end of October). The above pre-release URL will not remain valid forever..

Connecting to Mobile Network via Mobile Broadband API

I am trying to connect to a mobile network via a modem and a sim card. Every time I try to set the APN String and User Credentials in a Context via SetProvisionedContext() I get the E_INVALIDARG HRESULT.
As Parameters I used an Instance of MBN_CONTEXT, a wchar_t* in form of &std::vector<wchar_t>[0], and a ULONG*.
MBN_CONTEXT context;
std::vector<WCHAR> apnVector;
inParamAPN.GetCString(apnVector);
std::vector<WCHAR> userNameVec;
inParamUsername.GetCString(userNameVec);
std::vector<WCHAR> passwordVector;
inParamPassword.GetCString(passwordVector);
context.contextID = MBN_CONTEXT_ID_APPEND;
context.contextType = MBN_CONTEXT_TYPE_INTERNET;
context.accessString = &apnVector[0];
context.userName = &userNameVec[0];
context.password = &passwordVector[0];
context.compression = MBN_COMPRESSION_NONE;
context.authType = MBN_AUTH_PROTOCOL_PAP;
and later when I have the IMbnConnectionContext:
std::vector<WCHAR> providerVector;
InParamProvider.GetCString(providerVector);
ULONG requestID;
contextInterface->SetProvisionedContext(context, &providerVector[0], &requestID);
So my Question is: Which Parameter does the WinAPI have a Problem with, and how can I fix it?
Also any Tips of additional Sources for Information are appriciated.
All I have so far are the official MSDN and the Code Example contained in the Windows 7 SDK. Are there any further sources of Information I am not aware of? A google search didn't yield the hoped for results.
In the end I did not get it working as it should. I used the second way of connecting to a custom APN, by making a new connection profile. For this I used a XML filled with the Values I needed.
Along the way I encountered another problem with an unforseen Error Code which I described here.
Best regards,
Stefan

Create a web service that can answer to WhatsApp messages

I'm trying to understand if it's possible to create a web service that can send and answer to WhatsApp messages. I searched on the web and I found the WhatsAPI,
I guess this solution work fine, but with the actual version of WhatsApp it's not possible to get the nickname, the sender, the imei and the password.
To get them I set up a Linux PC in which I installed mitmproxy to sniff the web traffic of a Samsung Galaxy S4. By using mitmproxy I can see the web traffic generated by the phone, so I tried to register to WhatsApp (with an another SIM), but in mitmproxy I can't see the data I need for WhatsAPI.
Does anyone knows if it's possible to get the password by using another way?
If it exist can you suggest me a way? Do you think it's possible to do that or it's better to use Telegram or Wechat (they have public API)?
For Java, you can try WhatsUp
For Python, see YowsUp.
Beware that WhatsApp threatens legal action against many of these library developers and does not officially support using the service this way.
I have also spoken directly with WhatsApp representatives who have said no commercial API use of WhatsApp is acceptable.
Also note that bulk messaging is against the WhatsApp terms of service.
There used to be a PHP implementation at WhatsAPI, and another Java implementation, WhatsApi4J. Both are no longer available due to legal threats.
For .NET you use https://github.com/mgp25/Chat-API-NET
download installer for generate password https://github.com/mgp25/WART from this link
string nickname = "Nickname";
/* Your number in the format CCAANNNNNNNNN
* C - Country Code
* A - Area Code
* N - Phone number */
string sender = "***************"; //phone number
string password = "*****************"; // Obtain it with WART or Yowsup
WhatsApp wa = new WhatsApp(sender, password, nickname, true);
wa.OnConnectSuccess += () =>
{
Console.WriteLine("Connected");
wa.OnLoginSuccess += (phoneNumber, data) =>
{
Console.WriteLine("Connection success!");
wa.SendMessage("**************"/* Number */, "Hello World!");
Console.WriteLine("Message sent!");
};
wa.OnLoginFailed += (data) => {
Console.WriteLine("Login failed: {0}", data);
};
wa.Login();
};
wa.OnConnectFailed += (ex) =>
{
Console.WriteLine("Connect failed: {0}", ex.StackTrace);
};
wa.Connect();
Console.WriteLine("END");
Console.ReadLine();
wart app maybe works good for you.
WART
WhatsApp Registration Tool
Uses token generator created by Jake
Uses WhatsApiNet fork by me
Requires .NET Framework 4 or Mono Framework (mono-complete on Linux)
This tool is used to register new phonenumbers and can also be used to retrieve a new password for already registered numbers.
The registration identity is auto-generated by the program based on the phone number.
The optional (and highly recommended) password field is used as salt when generating the identity. This will generate a unique identity hash which cannot be replicated unless you know the password.
Leaving the password field blank will generate an identity hash of just the phone number, which can be easily replicated and is highly insecure.
If these answers were helpful to you, please consider saying thank you in a more constructive way

Get rid of security message Outlook

I'm writing an application that needs to access to Outlook address book, however, every time I launch it a warning message is shown saying that an application is trying to access to your adress book. I've noticed this behaviour only with the machines where no antivirus is installed. How to get rid of this message?
Here is a part of the code I use to retreive some emails related informations
CApplication l_application;
l_application.CreateDispatch("Outlook.Application");
CNameSpace l_namespace = l_application.GetNamespace(_T("MAPI"));
CMAPIFolder l_mapiFolder = l_namespace.GetDefaultFolder(olFolderInbox);
CItems l_items = l_mapiFolder.GetItems();
m_mailItem = l_items.GetLast();
m_mailItem.Save();
//Get infos (mail's size, from, to, conversation topic...)
CApplication, CNameSpace, CItems are generated automatically, and m_mailItem is a CMailItem object.
See http://www.outlookcode.com/article.aspx?id=52 for a list of your options. Essentially you can either make sure an up-to-date antivirus app is installed or use Redemption (I am its author).

Connect to web service in MS Access with VBA

Is it possible to connect to a web service (for example send a HTTP Request) via VBA in Microsoft Access?
For example, the user clicks a button on a form, then a HTTP Request is sent to a web service that responds with OK.
Has anyone done this before?
Note: VBA, not VB.NET.
This is code I've used quite successfully with Access 2003. It's from the interwebs, copied and re-copied ages ago. It creates a XMLHttpRequest Object, sends an HTTP GET request, and returns the results as a string.
Public Function http_Resp(ByVal sReq As String) As String
Dim byteData() As Byte
Dim XMLHTTP As Object
Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
XMLHTTP.Open "GET", sReq, False
XMLHTTP.send
byteData = XMLHTTP.responseBody
Set XMLHTTP = Nothing
http_Resp = StrConv(byteData, vbUnicode)
End Function
sReq is the URL; the function returns the response. You may need to make sure ActiveX Data Objects are enabled under your References (in the VBA editor, go to Tools > References).
This is the code , which I used. You need to first reference Microsoft XML V6 for this code to work.
Public Sub GetPerson()
'For API
Dim reader As New XMLHTTP60
reader.Open "GET", "www.exmple.com/users/5428a72c86abcdee98b7e359", False
reader.setRequestHeader "Accept", "application/json"
reader.send
Do Until reader.ReadyState = 4
DoEvents
Loop
If reader.Status = 200 Then
Msgbox (reader.responseText)
Else
MsgBox "Unable to import data."
End If
End Sub
I have used the "Microsoft Office 2003 Web Services Toolkit 2.01" toolkit (available here) on a few projects. It worked pretty well for me, although I also wrote the web services it was talking to, so I had the luxury of being able to fiddle with both ends of the process when getting it to actually work. :)
In fact, I just upgraded one of those apps from Access_2003 to Access_2010 and the SOAP client part of the app continued to work without modification. However, I did encounter one wrinkle during pre-deployment testing:
My app would not compile on a 64-bit machine running 32-bit Office_2010 because it did not like the early binding of the SoapClient30 object. When I switched to using late binding for that object the code would compile, but it did not work. So, for that particular app I had to add a restriction that 64-bit machines needed to be running 64-bit Office.
Also, be aware that Microsoft's official position is that "All SOAP Toolkits have been replaced by the Microsoft .NET Framework." (ref. here).