-
Lemuel Bacli
- PowerBuilder
- Thursday, 11 June 2026 06:23 AM UTC
Hi Appeon,
I would like to seek you advice on what might be the issue or missing with my code that my c# dll always returns null.
Here is my C# code - It was written on .net4.8 using VS2015 to prevent installation of .net runtime on each users.
using System;
using System.Net;
using System.Net.Mail;
namespace EmailService
{
public class EmailService
{
// Constructor explicitly defined for legacy COM/Proxy discovery
public EmailService()
{
}
public string SendEmail(string fromAddress, string toAddress, string subject, string body)
{
try
{
using (MailMessage mail = new MailMessage())
{
if (fromAddress != null) fromAddress = fromAddress.Trim();
if (toAddress != null) toAddress = toAddress.Trim();
mail.From = new MailAddress(fromAddress);
mail.To.Add(toAddress);
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
using (SmtpClient smtp = new SmtpClient("://ict-gma.com"))
{
smtp.EnableSsl = false;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("AppsService", "apps$1st!");
smtp.Send(mail);
}
}
return "SUCCESS";
}
catch (Exception ex)
{
// Safe string extraction that avoids the null-coalescing features of .NET 8
string errorMsg = (ex.Message != null) ? ex.Message : "Unknown SMTP Exception";
if (ex.InnerException != null)
{
errorMsg += " -> " + ex.InnerException.Message;
}
return "ERROR: " + errorMsg;
}
}
}
}
I imported the dll using the .net dll importer on PB2022R3: 
Here is function code for using this dll:
DotNetAssembly l_helper
nvo_emailservice l_proxy
long ll_return
string ls_error, ls_result
string ls_appdir, ls_fulldllpath
ls_appdir = GetCurrentDirectory()
ls_fulldllpath = ls_appdir + "\EmailService.dll"
messagebox("",ls_appdir)
messagebox("",ls_fulldllpath)
string ls_from, ls_to, ls_subj, ls_body
ls_from = String(em_from)
ls_to = String(em_to)
ls_subj = String(em_subj)
ls_body = String(em_body)
l_helper = Create DotNetAssembly
ll_return = l_helper.LoadWithDotNetFramework(ls_fulldllpath)
if ll_return = 1 then
l_proxy = Create nvo_emailservice
l_proxy.is_assemblypath = ls_fulldllpath
Try
ls_result = l_proxy.of_sendemail(ls_from, ls_to, ls_subj, ls_body)
if IsNull(ls_result) or ls_result = "" then
MessageBox("Diagnosis", "Returned an empty string. Check if the app directory path changed.")
else
// This will display SUCCESS or a clean SMTP error log
MessageBox("C# DLL Result", ls_result)
end if
Catch (RuntimeError ex)
MessageBox("PowerBuilder Runtime Error", "Failed to communicate with C# Proxy:~n~n" + ex.GetMessage())
End Try
Destroy l_proxy
else
ls_error = l_helper.ErrorText
MessageBox("DLL Load Failed", "Error Code: " + String(ll_return) + "~n~nDetails: " + ls_error)
end if
Destroy l_helper
return ls_result
So now, my issue is that this exact code for both C# and PB works properly on my Win 11 unit but not on my Win10 test unit.
The code fails on this:

as the ls_result is returning null value.
What might be the cause of this?
Hoping for you help.
Find Questions by Tag
Helpful?
If a reply or comment is helpful for you, please don’t hesitate to click the Helpful button. This action is further confirmation of their invaluable contribution to the Appeon Community.