When creating the HTML file, I've noticed that some users have the correct logo in their signature, while others experience a black background. I would like to make the background transparent instead of black every time. It's inconsistent.
To achieve this, I'm using Microsoft's base JavaScript to ensure the script can be launched on every machine at startup.
I attempted to set the background to transparent using the tag, but it did not yield the desired result. Alternatively, I could set the background to white; however, this poses an issue when users are using the dark version of Outlook, as our logo would then have a white background.
Is there a way to overcome this problem and ensure that the logo appears appropriately regardless of the Outlook version or color scheme?
Here's the whole code minus functions code :
var shell = new ActiveXObject("WScript.Shell");
var appDataFolder = shell.ExpandEnvironmentStrings("%APPDATA%");
var localAppDataFolder = shell.ExpandEnvironmentStrings("%LOCALAPPDATA%");
var fileSystemObject = new ActiveXObject("Scripting.FileSystemObject");
var signatureFolder = appDataFolder + "\\Microsoft\\Signatures\\"
var log = "";
if (!fileSystemObject.FolderExists(signatureFolder)) {
log += "File at path didnt exist : (" + signatureFolder + ")\n";
fileSystemObject.CreateFolder(signatureFolder);
log += "Creating : (" + signatureFolder + ")\n";
}
log += "Signature folder located at : (" + signatureFolder + ")\n";
try {
log += "Try to connect to AD\n";
var objSysInfo = new ActiveXObject("ADSystemInfo");
var userObject = GetObject("LDAP://" + objSysInfo.UserName);
} catch (e) {
log += "Connecting to AD failed error : " + e + "\n";
log += "Quitting\n";
CreateLogFile(log);
WScript.Quit()
}
log += "AD connected\n";
log += "Getting user info to use \n";
log += "----------------------------------\n";
var user = {
loginName: userObject.samaccountname || "",
firstName: userObject.givenName || "",
lastName: userObject.sn || "",
displayname: userObject.displayname || "",
email: userObject.mail || "",
jobTitle: userObject.title || "",
department: userObject.department || "",
company: userObject.company || "",
officePhoneNumber: formatPhoneNumber(userObject.telephoneNumber) || "",
ipPhoneNumber: formatPhoneNumber(userObject.ipphone) || "",
mobilePhoneNumber: formatPhoneNumber(userObject.mobile) || "",
city: userObject.l || "",
postalCode: userObject.postalcode || "",
province: userObject.st || "",
officeLocation: userObject.physicaldeliveryofficename || "",
streetAddress: userObject.streetaddress || ""
};
log += "*Those infos were retrieved*\n";
for (var property in user) {
if (user.hasOwnProperty(property)) {
log += property + ": " + user[property] + "\n"
}
}
if (!user.email) {
log += "User has no email setted, Quitting before creating sig files\n";
CreateLogFile(log)
WScript.Quit();
}
log += "----------------------------------\n";
var webSiteLink = "https://www.yourWebSite.com/";
log += "WebsiteLink : " + webSiteLink + "\n";
var facebookLink = GetFacebookLink(user.officeLocation);
log += "FacebookLink : " + facebookLink + "\n";
var signatureHTML = "<br><div style=\"font-family: Arial Nova\">" +
(user.displayname ? user.displayname + "<br>" : "") +
(user.jobTitle ? user.jobTitle : "") +
"</div>";
signatureHTML +=
"<div style=\"font-family: Arial Nova\">" + "<br>" +
(user.company ? user.company + "<br>" : "") + "<i>" +
(user.ipPhoneNumber ? "Tel : <a style=\"color:green\" href=\"tel:" + user.ipPhoneNumber + "\">" + user.ipPhoneNumber + "</a><br>" : "") +
(user.mobilePhoneNumber ? "Cell : <a style=\"color:green\" href=\"tel:" + user.mobilePhoneNumber + "\">" + user.mobilePhoneNumber + "</a><br>" : "") +
(user.officePhoneNumber ? "Tel Bureau : <a style=\"color:green\" href=\"tel:" + user.officePhoneNumber + "\">" + user.officePhoneNumber + "</a><br>" : "") +
(user.streetAddress ? user.streetAddress + "<br>" : "") +
((user.city && user.province && user.postalCode) ? user.city + " (" + user.province + "), " + user.postalCode + "<br>" : "") + "<i>" +
"<div>" +
"<a href=\"" + webSiteLink + "\">" +
"<img src=\"" + GetThermafixLogo() + "\" style = \"background-color:transparent;\">" +
"</a>" +
"<a href=\"" + facebookLink + "\">" +
"<img src =\"" + GetFacebookLogo() + "\" style = \"background-color:transparent;\">" +
"</a>" +
"</div></div>";
var signatureText =
(user.displayname ? user.displayname + "\n" : "") +
(user.jobTitle ? user.jobTitle + "\n\n" : "") +
(user.company ? user.company + "\n" : "") +
(user.ipPhoneNumber ? "Tel : " + user.ipPhoneNumber + "\n" : "") +
(user.mobilePhoneNumber ? "Cell : " + user.mobilePhoneNumber + "\n" : "") +
(user.officePhoneNumber ? "Tel Bureau : " + user.officePhoneNumber + "\n\n" : "") +
(user.streetAddress ? user.streetAddress + "\n" : "") +
((user.city && user.province && user.postalCode) ? user.city + " (" + user.province + "), " + user.postalCode : "");
var signatureRTF = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1036{\\fonttbl{\\f0\\fswiss\\fcharset0 Arial;}}{\\colortbl ;\\red0\\green128\\blue0;}{\\*\\generator Msftedit 5.41.15.1507;}\\viewkind4\\uc1\\pard\\f0\\fs20 " +
(user.displayname ? user.displayname + "\\par " : "") +
(user.jobTitle ? user.jobTitle + "\\par\\par " : "") +
(user.company ? user.company + "\\par " : "") +
(user.ipPhoneNumber ? "Tel : {\\field{\\*\\fldinst{HYPERLINK \"tel:" + user.ipPhoneNumber + "\"}}{\\fldrslt{\\ul\\cf1 " + user.ipPhoneNumber + "}}}\\par " : "") +
(user.mobilePhoneNumber ? "Cell : {\\field{\\*\\fldinst{HYPERLINK \"tel:" + user.mobilePhoneNumber + "\"}}{\\fldrslt{\\ul\\cf1 " + user.mobilePhoneNumber + "}}}\\par " : "") +
(user.officePhoneNumber ? "Tel Bureau : {\\field{\\*\\fldinst{HYPERLINK \"tel:" + user.officePhoneNumber + "\"}}{\\fldrslt{\\ul\\cf1 " + user.officePhoneNumber + "}}}\\par\\par " : "") +
(user.streetAddress ? user.streetAddress + "\\par " : "") +
((user.city && user.province && user.postalCode) ? user.city + " (" + user.province + "), " + user.postalCode + "\\par " : "") +
"}";
CreateFiles(signatureText, signatureRTF, signatureHTML);
log += "Signature files created\n";
log += "----------------------------------\n\n";
try {
var pstPath = localAppDataFolder + "\\Microsoft\\Outlook\\"
var fileNameToMatch = [user.email + ".pst", user.email + ".nst", user.email + ".ost"]
log += "-------------------------------\n"
log += "PST folder location : " + pstPath + "\n";
log += "File names to match : " + fileNameToMatch[0] + ", " + fileNameToMatch[1] + ", " + fileNameToMatch[2] + "\n";
var fileNames = [];
var folder = fileSystemObject.GetFolder(pstPath);
var files = new Enumerator(folder.Files);
for (; !files.atEnd(); files.moveNext()) {
fileNames.push(files.item().Name)
}
var foundAMatch = false;
log += "files matching : \n"
for (var i = 0; i < fileNames.length; i++) {
for (var j = 0; j < fileNameToMatch.length; j++) {
if (fileNames[i] == fileNameToMatch[j]) {
foundAMatch = true;
log += fileNames[i] + "\n"
}
}
}
log += "-------------------------------\n\n"
} catch (e) {
log += "Outlook user file not found error : " + e + "\n";
log += "Quitting\n";
CreateLogFile(log);
WScript.Quit()
}
var isFirstTime = true;
var firstTimeFilePath = signatureFolder + "\\isFirstTime.txt"
if (fileSystemObject.FolderExists(signatureFolder) && !fileSystemObject.FileExists(firstTimeFilePath)) {
var fileStream = fileSystemObject.CreateTextFile(firstTimeFilePath, true)
fileStream.Write(isFirstTime)
fileStream.Close();
}
if (fileSystemObject.FileExists(signatureFolder + "Properties.txt")) {
fileSystemObject.DeleteFile(signatureFolder + "Properties.txt")
}
if (fileSystemObject.FileExists(firstTimeFilePath)) {
var tempFile = fileSystemObject.OpenTextFile(firstTimeFilePath, 1)
var content = tempFile.ReadAll();
tempFile.Close();
if (content.toLowerCase() == "true" && foundAMatch) {
isFirstTime = false;
try {
var wordObject = new ActiveXObject("Word.Application");
var emailSettings = wordObject.EmailOptions.EmailSignature;
emailSettings.NewMessageSignature = user.displayname;
emailSettings.ReplyMessageSignature = user.displayname;
// Close and release the Word application object
try {
wordObject.Quit();
wordObject = null;
} catch (e) {
// Handle any errors that occur during the closing process
log += "Error occurred while closing Word application: " + e + "\n";
}
} catch (e) {
log += "Word Object couldn't be created error : " + e + "\n";
log += "Quitting\n"
CreateLogFile(log);
WScript.Quit();
}
var fileStream = fileSystemObject.CreateTextFile(firstTimeFilePath, true)
fileStream.Write(isFirstTime)
fileStream.Close();
}
}
CreateLogFile(log);